linkedhashset,treeset都可以保证集合元素唯一,有序。
从一个Java者的角度肯定不是看CPU了,肯定是看内存了。
我分别用treeSet和linkedHashSet存储了同样的对象,代码如下:
LinkedHashSet<Student> linkedHashSet = new LinkedHashSet();
int i = 0;
while(true){
Student s = new Student();
s.setAge(i);
s.setName("XXX");
i++;
linkedHashSet.add(s);
}
TreeSet<Student> studentTreeSet = new TreeSet<>();
int i = 0;
while(true) {
Student s = new Student();
s.setAge(i);
s.setName("XXX"+i);
i++;
studentTreeSet.add(s);
}
}
//Student
package linkedhashset$treeset;
public class Student implements Comparable{
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
public Student() {
}
public Student(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public int compareTo(Object o) {
return 0;
}
}
LinkedHashset和treeset都以20秒为例测试内存上升情况。
//4.3G-5.6G linkedhashset //4.4G-5.1G treeset 可以看到,20s期间,treeset完美胜出。