Set是Collection接口的子接口,模仿数学中的集合并对其进行抽象。我们先了解一下Set集合有什么样的特点:
- 最多包含一个null元素
- 没有索引
- 无序(存和读的顺序可能不同)
- Set.add() 不允许重复,因此可能返回false(List.add()永远返回true,因为List允许有重复)
一、对Set集合的使用
Set与List一样,知道List怎么创建对象之后,我们也可以轻松了解到Set是如何创建对象的,来看代码:
private static void method() {
// 创建集合对象
// HashSet<String> hs = new HashSet<String>();
Set<String> set = new HashSet<String>();
// 添加元素
set.add("Hello");
set.add("Java");
set.add("Hadoop");
// 遍历集合
Object[] objs = set.toArray();
for (int i = 0; i < objs.length; i++)
System.out.println(objs[i]);
for (String s : set)
System.out.println(s);
Iterator<String> it = set.iterator();
while (it.hasNext())
System.out.println(it.next());
}
HashSet是Set接口的一个实现类,可以用它来创建Set对象,同时Set的遍历与List相同,此处列举了遍历Set的三种方法。
二、Set存储自定义类型去重
先来看一个Set存储自定义类型的实例,先是一个Student类
class Student{
String name;
int age;
public Student(String name, int age) {
super();
this.name =