您的位置:首页 > 编程语言 > Java开发

Java中TreeSet的用法

2016-05-20 10:37 435 查看
Java中 TreeMap和TreeSet算是java集合类里面比较有难度的数据结构。和普通的HashMap不一样,普通的HashMap元素存取的时间复杂度一般是O(1)的范围,而TreeMap内部对元素的操作复杂度为O(logn)。

虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeMap是一个内部元素排序版的HashMap。同样,TreeSet是一个封装了一个HashSet的成员变量来实现的。

这里主要展现TreeSet的两种常用方法:

方法一:

public class TreeSetTest {
public static void main(String[] args) {
Set<String> set = new TreeSet<String>();
set.add("abc");
set.add("xyz");
set.add("rst");

System.out.println(set);//可以直接输出

Iterator itSet = set.iterator();//也可以遍历输出
while(itSet.hasNext())
System.out.print(itSet.next() + "\t");
System.out.println();
}
}

输出结果为:

[abc, rst, xyz]
abc	rst	xyz


方法二:

//自定义数据类型,并在自定义的数据类型中实现CompareTo方法
class Teacher implements Comparable {
int num;
String name;

Teacher(String name, int num) {
this.num = num;
this.name = name;
}

public String toString() {
return "学号:" + num + " 姓名:" + name;
}

public int compareTo(Object o) {
Teacher ss = (Teacher) o;
int result = num > ss.num ? 1 : (num == ss.num ? 0 : -1);
if (result == 0) {
result = name.compareTo(ss.name);
}
return result;
}
}

public class TreeSetTest {
public static void main(String[] args) {
Set<Teacher> treeSet = new TreeSet<Teacher>();
treeSet.add(new Teacher("zhangsan", 2));
treeSet.add(new Teacher("lisi", 1));
treeSet.add(new Teacher("wangwu", 3));
treeSet.add(new Teacher("mazi", 3));

System.out.println(treeSet);//直接输出

Iterator itTSet = treeSet.iterator();//遍历输出
while(itTSet.hasNext())
System.out.print(itTSet.next() + "\t");
System.out.println();
}
}
输出结果为:

[学号:1 姓名:lisi, 学号:2 姓名:zhangsan, 学号:3 姓名:mazi, 学号:3 姓名:wangwu]
学号:1 姓名:lisi	学号:2 姓名:zhangsan	学号:3 姓名:mazi	学号:3 姓名:wangwu
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: