一些概念性内容:
List集合的特点:元素有序、可重复、有索引;
Set集合的特点:元素无序、不重复、无索引;
LinkedHashSet实现类:元素有序;
TreeSet实现类:元素可排序;
(Set接口中的方法基本与Collection接口的API一致,如add.方法/remove/size等)
Collection接口:单列集合的共用接口,与Map双列集合(可一次添加一对数据)相对。
①创建HashSet对象:
Set<String> s = new HashSet<>();
常用方法示范:
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args){
//1.创建对象
Set<String> s = new HashSet<>();
//2.添加元素
boolean r1 = s.add("御坂");
boolean r2 = s.add("御坂");
System.out.println(r1);//True
System.out.println(r2);//False(重复添加相同元素失败)
//3.打印集合
boolean r3 = s.add("黑子");
boolean r4 = s.add("食蜂");
System.out.println(s);//[食蜂, 御坂, 黑子]
}
}
可以发现,HashSet存取的顺序不一样,而使用LinkedHashSet可以有效解决这一问题。
②创建TreeSet对象:
TreeSet实现类:元素可排序;示例代码如下:
public class Main {
public static void main(String[] args){
//1.创建对象
TreeSet<Integer> ts = new TreeSet<>();
//2.添加元素
ts.add(2);
ts.add(5);
ts.add(3);
ts.add(1);
ts.add(4);
//打印集合
System.out.println(ts);//[1, 2, 3, 4, 5]
}
}
③迭代器遍历:Iterator类
Collection三种遍历方式之一:迭代器遍历、增强for遍历、Lamda表达式遍历
迭代器遍历的特点:不依赖索引
创建迭代器对象:
Iterator<String> it = list.iterator();//list是创建的某个集合
调用迭代器方法:
while(it.hasNext()) //.hasnext用于判断是否有下一个元素
System.out.print(it.next); //.next会从集合的0位置开始创建指针,获取元素。每次使用会移动指针
④增强for:底层就是迭代器, 为了简化迭代器代码而编写的直接遍历方式。
for( String s : list ) {
System.out.println(s);
}
细节:修改增强for中的变量(如s=“aaa”,不会改变集合中的数据)
⑤Lamda遍历:用foreach方法遍历集合。
list.forEach(s -> System.out.println(s));