1、关于强for,替换了数组的for循环遍历,替换了集合的迭代器遍历
2、String[] array = list.toArray(new String[list.size()]);
① 传入一个数组,首先检测数组的长度和集合的大小是否一致,一致就用该数组,不一致就会产生一个新的数组
② 将存满元素的数组复制给array
3、 List<String> list = Arrays.asList(array);
① 数组的工具类Arrays提供了一个静态方法asList,可以将数组转换为一个List集合
② 这时集合和数组进行绑定了,对集合的操作就是对数组的操作,且不能对集合进行增删操作
③ 如果真的要对集合进行增删操作,则需要建立一个新的集合,将所有元素存入该集合:
/*
所有的集合都支持一个参数为Collection的构造方法,作用是在创建当前
集合的同时包含给定集合中的所有元素
*/
List<String> list2 = new ArrayList<>(list);
4、所有的集合都重写了toString方法
5、关于comparable接口
① Collections.sort(List list)该方法要求集合中的元素类型必须实现接口: Comparable,该接口中有一个抽象方法compareTo,这个方法用来定义元素之间比较大小的规则.所以只有实现了该接口的元素才能利用这个方法比较出大小进而实现排序操作。
② 1.系统的一些自带类,如String、包装类等已经实现了该接口,并重写了compareTo(obj)方法,规定了两个对象的比较大小方式 2.这些类如果进行排序,默认是从小到大 3.重写compareTo(obj)规则: (1)如果当前对象大于形参对象obj,返回正整数 (2)如果当前对象等于形参对象obj,返回负整数 (3)如果当前对象小于形参对象obj,返回0
③ 使用场景: 对于自定义类的对象我们想要进行排序,则可以让自定义类实现Comparable接口,重写compareTo(obj)方法,指明如何排序。
6、Comparator接口(定制排序) 说明: 1.造一个类,实现Comparator接口,重写compare方法,用这个类的对象充当比较器 2.通常使用匿名类匿名对象直接在排序方法中传入比较器 3.重写compare(Object o1,Object o2)规则: (1)o1大于o2,返回正整数(不一定是返回1) (2)o1等于o2,返回0 (3)o1小于o2,返回负整数
使用场景:对已经实现了Comparable接口的类想改变排序方式,只是临时用一下不想改类代码(如默认是升序,想改成降序),可以临时用Comparator实现。
7、 (1)迭代器提供的相关方法: boolean hasNext();判断集合是否还有元素可以遍历,返回值boolean E next();获取集合下一个元素(第一次调用时就是获取第一个元素,以此类推)
(2) 迭代器就是把一个集合类(如:List,ArrayList)里面的东西一次全取出来,按照原来的顺序排成一个队(比如在医院),然后你对它说"下一个"(.next)的时候,队头那个家伙就出来了(返回一个对象),你就可以给它看病了,然后当没有人了的时候你再喊"下一个",护士小姐就会对你说没有人了(next返回false),你就可以下班了
8、
public class SetDemo {
public static void main(String[] args) {
//创建Set集合对象
// Set<Integer> set = new HashSet<Integer>(); 无序
Set<Integer> set = new TreeSet<Integer>(); //有序
//创建随机数对象
Random r = new Random();
//判断集合的长度是不是小于10
while (set.size()<10) {
//产生一个随机数,添加到集合
int number = r.nextInt(20) + 1;
set.add(number);
}
//遍历集合
for(Integer i : set) {
System.out.println(i);
}
}
}