public class Test1 {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(123);
set.add(123);
set.add(234);
System.out.println("set = " + set);
System.out.println(set.size());
}
}
注意:不会按照保存的顺序存储数据(顺序不定),遍历时不能保证下次结果和上次相同。且向HashSet集合中添加元素,HashSet add方法实质是map全局变量调用了put方法,将数据存到了key,因为HashMap的 key不允许重复,所以HashSet添加的元素也不允许重复。
public class Test1 {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(123);
set.add(123);
set.add(234);
System.out.println(set.isEmpty());
System.out.println(set.remove(Integer.valueOf(123)));
System.out.println(set);
}
}
public class Test1 {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(123);
set.add(123);
set.add(234);
System.out.println(set);
set.clear();
System.out.println(set);
}
}
public class Test1 {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(123);
set.add(123);
set.add(234);
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
public class Test1 {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(123);
set.add(123);
set.add(234);
System.out.println(set.contains(123));
}
}
public class Test1 {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(123);
set.add(123);
set.add(234);
for (Integer integer : set) {
System.out.println(integer);
}
}
}
注意:因此set中的元素是没有顺序的,所有不能用下标来获取元素
public class Test1 {
public static void main(String[] args) {
TreeSet<Integer> ts = new TreeSet<>();
ts.add(234);
ts.add(123);
ts.add(99);
System.out.println(ts);
}
}
import java.util.TreeSet;
public class Person implements Comparable {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Object o) {
Person p = (Person) o;
if (this.name.compareTo(p.name) != 0) {
return this.name.compareTo(p.name);
} else {
if (this.age > p.age) return 1;
else if (this.age < p.age) return -1;
}
return 0;
}
}
class Test {
public static void main(String[] args) {
TreeSet<Person> ts = new TreeSet<>();
ts.add(new Person("abc", 18));
ts.add(new Person("adf", 28));
ts.add(new Person("abac", 20));
ts.add(new Person("adf", 15));
for (Person t : ts) {
System.out.println(t.name+" "+t.age);
}
}
}
输出
abac 20
abc 18
adf 15
adf 28
HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作
LinkedHashSet:LinkedHashSet的查询稍微慢一些,但是他可以维持元素的基本顺序。所以只有要求当插入顺序和取出顺序一致的时候,才会使用LinkedHashSet
TreeSet:只有需要对元素进行排序的时候使用
Set集合不能重复,常规使用HashSet,在需要添加顺序和取出顺序一致的时候使用LinkedHashSet,当需要排序时使用TreeSet