set接口基本介绍:
1、无序的,添加和取出的顺序不一致,没有索引。
2、不允许重复元素,所以最多包含一个null。
3、JDK API中set接口的常见实现类有 HashSet和TreeSet。
由于是Collection接口的子接口,所以可以使用Collection的方法。
在遍历元素的时候,可以使用迭代器,增强for循环,但是不能使用索引的方式来获取元素。取出的顺序不是添加的顺序,但顺序是固定的。
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Set_01 {
public static void main(String[] args) {
Set set = new HashSet();
set.add("Jack");
set.add("Mary");
set.add("Tom");
set.add(null);
set.add(null);
System.out.println(set);
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println(obj);
}
for (Object o:set) {
System.out.println(o);
}
}
}
[null, Tom, Jack, Mary]
null
Tom
Jack
Mary
null
Tom
Jack
Mary
Process finished with exit code 0
HashSet的底层是HashMap。
set.add() API的结果会返回一个bool值,如果数据添加进去了,则返回true。如果数据没有被添加进去,则返回false。
import java.util.HashSet;
import java.util.Set;
public class Set_02 {
public static void main(String[] args) {
Set set = new HashSet();
System.out.println(set.add("Jone"));
System.out.println(set.add("Mary"));
System.out.println(set.add("Amy"));
System.out.println(set.add(null));
System.out.println(set.add("Jone"));
}
}
true
true
true
true
false
Process finished with exit code 0