HashSet(无序,插入顺序不一定和输出顺序一致,按hash值插入)
(1)超级for
import java.util.HashSet;
public class Set_HashSet {
public static void main(String[] args) {
HashSet<String> set=new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
for(String str:set){
System.out.println(str);
}
}
}(2)迭代器
import java.util.HashSet;
import java.util.Iterator;
public class Set_HashSet {
public static void main(String[] args) {
HashSet<String> set=new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
Iterator<String> iterator=set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}两者速度比较
| 超级for | 迭代器 | |
| 10万 | 10ms | 9ms |
| 100万 | 49ms | 50ms |
| 1000万 | 444ms | 432ms |
TreeSet
(1)超级for
import java.util.TreeSet;
public class Set_TreeSet {
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<String>();
treeSet.add("B");
treeSet.add("A");
treeSet.add("C");
for (String str : treeSet) {
System.out.println(str);
}
}
}(2)迭代器
import java.util.Iterator;
import java.util.TreeSet;
public class Set_TreeSet {
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<String>();
treeSet.add("B");
treeSet.add("A");
treeSet.add("C");
Iterator<String>iterator=treeSet.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}两者速度比较
| 超级for | 迭代器 | |
| 10万 | 10ms | 21ms |
| 100万 | 43ms | 89ms |
| 1000万 | 339ms | 696ms |
LinkedHashSet(同样根据hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序,所以输出顺序与插入顺序一致)
(1)超级for
import java.util.LinkedHashSet;
public class Set_LinkedHashSet {
public static void main(String[] args) {
LinkedHashSet<String>linkedHashSet=new LinkedHashSet<String>();
linkedHashSet.add("A");
linkedHashSet.add("B");
linkedHashSet.add("C");
for (String str: linkedHashSet) {
System.out.println(str);
}
}
}
(2)迭代器
import java.util.Iterator;
import java.util.LinkedHashSet;
public class Set_LinkedHashSet {
public static void main(String[] args) {
LinkedHashSet<String>linkedHashSet=new LinkedHashSet<String>();
linkedHashSet.add("A");
linkedHashSet.add("B");
linkedHashSet.add("C");
Iterator<String>iterator=linkedHashSet.iterator();
while (iterator.hasNext()) {
iterator.next();
}
}
}
两者速度比较
| 超级for | 迭代器 | |
| 10万 | 5ms | 7ms |
| 100万 | 22ms | 28ms |
| 1000万 | 162ms | 215ms |
总结
linkedHashSet相比较于HashSet,其遍历速度比较快,但是由有要保证有序,其插入速度比较慢。
本文深入探讨了Java集合框架中HashSet, TreeSet及LinkedHashSet的特点与应用。对比了不同遍历方式的性能,分析了它们在存储与检索数据方面的优劣。
2843

被折叠的 条评论
为什么被折叠?



