前言 |
Java中HashSet和TreeSet这两个集合实在是令人头疼,也算是一个入门级的东西,为了方便以后的学习,在这里做下总结!在说它两之间还要先说说Set!
Set |
首先Set是Collection的接口,从Set的特点说起吧
- Set集合是无序的
class Test12 {
public static void main(String[] args) {
Set<String>set=new HashSet<>();
set.add("gg");
set.add("ff");
set.add("961235");
set.add("ss");
set.add("ww");
System.out.println(set); //输出:[ww, ff, gg, ss, 961235]
}
}
- Set集合是不可重复的
class Test12 {
public static void main(String[] args) {
Set<String>set=new HashSet<>();
set.add("gg");
set.add("ff");
set.add("961235");
set.add("ss");
set.add("ww");
System.out.println(set); //输出:[ww, ff, gg, ss, 961235]
set.add("gg");
set.add("ff");
System.out.println(set); //输出:[ww, ff, gg, ss, 961235]
}
}
- Set的迭代遍历
//迭代遍历
Iterator<String> iterator=set.iterator();
while (iterator.hasNext()){
String str=iterator.next();
System.out.print(str+"\t"); //输出:ww ff gg ss 961235
}
HashSet |
HashSet实现了Set接口。它和Set一样是无序的、不可重复的。
和Set不同的就是,他的底层是HashMap,也就是说HashSet是HaspMap键的集合。定义一个HashSet集合,去add()方法里看一下(如下图)
TreeSet |
TreeSet实现了SortedSet接口,可以对元素自然排序,要求集合中的元素必须是可比较的。
- 在创建TreeSet时,可以指定Comparator比较器。(较灵活)
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) { //重写compare方法,按字符串降序排序
return o2.compareTo(o1);
}
});
treeSet.add("aa");
treeSet.add("ww");
treeSet.add("hh");
treeSet.add("bb");
treeSet.add("ff");
System.out.println(treeSet); //输出:[ww, hh, ff, bb, aa]
- 创建TreeSet集合,不指定Comparator控制器。
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) { //重写compare方法,按字符串降序排序
return o2.compareTo(o1);
}
});
treeSet.add("aa");
treeSet.add("ww");
treeSet.add("hh");
treeSet.add("bb");
treeSet.add("ff");
System.out.println(treeSet); //输出:[ww, hh, ff, bb, aa]
//TreeSet实现了Comparable接口
TreeSet<String> treeSet2 = new TreeSet<>();
treeSet2.addAll(treeSet);
System.out.println(treeSet2); //输出:[aa, bb, ff, hh, ww]
}
- TreeSet底层是TreeMap,TreeSet实际上是TreeMap键的集合
总结 |
多去看Java底层的代码,明白其原理,后面还有很多集合,这只是刚开始!