1Set类
1.1HashSet
- 不能存放重复的元素
- 存放是无序的
HashSet的常用方法:
//实例化HashSet
Set set = new HashSet();
//添加元素
set.add(123);
set.add(123);
set.add("ss");
set.add("ss");
//移除元素,只能是移除指定数据,不能从下标移除,因为HashSet是无序的,
set.remove("ss");
//获取元素个数
set.size();
HashSet也可也使用泛型(集合类都可以使用泛型)
//泛型
Set<Integer> set = new HashSet<Integer>();
2Iterator(迭代器)
HashSet中没有get()方法,那要怎么样获取和遍历数组元素呢?
可以使用Iterator来获取和遍历元素,先看Iterator
只有3个方法:HasNext():判断是否还有元素,有酒返回true。
next():指向下一个元素,
remove():移除被Next指向的元素看图就明白iterator执行过程
所有的集合类都有这样的一个迭代器。
这样就可获取和遍历HashSet中的元素了:看代码
//泛型
Set<Integer> set = new HashSet<Integer>();
//添加元素
set.add(123);
set.add(123);
set.add(123);
set.add(456);
set.add(789);
set.add(999);
//遍历元素
//HashSet中有个iteator()方法可以返回一个迭代器
//迭代器也可以是泛型的
Iterator<Integer> t = set.iterator();
for(;t.hasNext();){ //判断hashNext后面是否有值
int i = t.next(); //调用next()指针往后移,并返回该指针指向的值
System.out.println(i);
}
这里输出的是:
789
999
456
123
这里的值怎么少了几个,我add了三个123,怎么只输出了一个123?还有顺序也不一样?
因为HashSet存放的元素不能重复,并且是无序的
3超级for循环
这个for循环是基于iterator原理的
非常好用,可以遍历数组或集合里面的元素
例:
for(数据类型 类型名称:数组对象)
//泛型
Set<Integer> set = new HashSet<Integer>();
//添加元素
set.add(123);
set.add(123);
set.add(123);
set.add(456);
set.add(789);
set.add(999);
//超级for循环
for(int i:set){
System.out.println(i);
}