Set接口基本介绍:
1)无序(添加和取出顺序不一致),没有索引
2)不允许重复元素,最多只能有一个 null
3)其实现类如下:
Set接口常用方法:
和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样
Set接口的遍历方式:
和Collection的遍历方式一样,1)可以使用迭代器,2)增强for 3)不能使用索引的方式来获取
public class SetMethod {
public static void main(String[] args) {
//1. 以Set 接口的实现类 HashSet 来讲解Set 接口的方法
//2. set 接口的实现类的对象(Set接口对象), 不能存放重复的元素, 可以添加一个null
//3. set 接口对象存放数据是无序(即添加的顺序和取出的顺序不一致)
//4. 注意:取出的顺序的顺序虽然不是添加的顺序,但是他的固定.
Set set = new HashSet();
set.add("john");
set.add("lucy");
set.add("john");//重复
set.add("jack");
set.add("hsp");
set.add("mary");
set.add(null);//
set.add(null);//再次添加null
for(int i = 0; i <10;i ++) {
System.out.println("set=" + set);
}
//遍历
//方式1: 使用迭代器
System.out.println("=====使用迭代器====");
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
set.remove(null);
//方式2: 增强for
System.out.println("=====增强for====");
for (Object o : set) {
System.out.println("o=" + o);
}
//set 接口对象,不能通过索引来获取
}
}
HashSet详解:
1)HashSet实现了Set接口
2)HashSet实际上是HashMap
public class HashSet_ {
public static void main(String[] args) {
//老韩解读
//1. 构造器走的源码
/*
public HashSet() {
map = new HashMap<>();
}
2. HashSet 可以存放null ,但是只能有一个null,即元素不能重复
*/
Set hashSet = new HashSet();
hashSet.add(null);
hashSet.add(null);
System.out.println("hashSet=" + hashSet);
}
}
3)可以存放null,但只有一个
4)HashSet不保证元素是有序的,却决于hash后,在确定索引的结果(也就是不保证存放元素的顺序和取出的顺序一致)
5)不能有重复元素/对象
HashSet基本内容演示:
public class HashSet01 {
public static void main(String[] args) {