目录
一.Collections概述:
1.1什么是Collections类:
1.2 Collections类和collection的区别和联系:
二. Collections类的主要方法:
一.Collections概述:
1.1 什么是Collections类:
- Java.util.Collections是一个集合工具类,用于操作LIst,Set,Map等集合。
- Collections类提供了一系列的静态方法,可以实现对集合元素的排序,添加一些元素,随机排序,替换等操作。
注意:Collections类不能new对象,不是因为没有构造方法,而是因为Collections的构造方法被私有化处理了。但是调用方法可以直接通过类名调用Collections类的方法,因为Collections类中的方法都是被static修饰了,可以直接用类名调用。
1.2 Collections类和collection的区别和联系:
区别:
- Collections是一个工具类,有属性和静态方法
- Collection是一个根接口,下面有List和Set接口,两个接口各有他们具体的实现类。
- 他们只有一个字母的区别,但是两者是完全不同的概念。
联系:
- Collctions中提供给collection接口下的Set和List集合许多方法,方便对集合中的元素更好的处理。
二. Collections类的主要方法:
Collections中的方法都是静态方法,可以通过类名.方法名直接调用。
1.public static void shuffle(List)。混乱排序
2.public static boolean addAll(Collection c, T… elements)。添加一些元素
3.public static void sort(List list,Comparator
2. addAll() 添加一些元素:
作用:
addAll方法用于往集合中快速添加一些元素
用法:
第一个形参放集合对象,之后放参数1 ,参数2, 可变参数类型… 。
什么是可变参数类型呢?
方法中的某个参数在实际调用时,实参个数可以0个,或者1个,或者多个。这个参数就是可变参数。可变参数参数的意义:方便方法的调用,可以传入任意多个同类型的数据。
注意点:
如果方法中有多个参数,可变参数要放到最后。
一个方法只能有一个可变参数
使用案例:
1.创建多个学生对象。
2.把学生用addAll方法装入Linkedlist集合中
import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;public class CollectionsTest { public static void main(String[] args) {//创建一个linkedlist集合 LinkedList linkedList = new LinkedList(); Student student1 = new Student(1, "章1"); Student student2 = new Student(6, "章2"); Student student3 = new Student(9, "章3"); Student student4 = new Student(1, "章4");Collections.addAll(linkedList,student1,student2,student3,student4);for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); }
运行结果:
3. sort()自然排序:
作用:
把集合中的元素按照规则升序或者降序,再或者什么也不干。
注意点:
当使用sort方法时,该集合元素必须是Comparable的子类型,也就是集合中的元素必须实现comparable接口中的comparaTo方法。否则不能使用该方法。
public int compareTo(T o);
必须实现这个抽象方法,才能使用sort方法。但是由于我们一些基本的常用类如String,基本数据类型的包装类等,已经实现了该方法,所以我们不需要自己重写该方法了。自定义类型使用sort方法就必须实现comparaTo方法。
4.sort()自定义排序:
自定义类型,如学生类,有属性:年龄,姓名等。创建多个学生类对象,放入List集合中。自定义使用sort方法时就必须重写comparaTo方法。
@Override public int compareTo(Student2 o) { return this.age-o.age; }
重写之后的comparaTo方法。
重载之后的sort():
sort()方法还有第二种类型(collection,new Comparator
Comparator是一个接口,实际上是new了Comparator的实现类,但是要实现里面的抽象方法。
使用案例:
1.自定义一个学生类,有年龄,姓名,成绩属性。
2.创建5个学生对象,然后根据他们年龄大小实现年龄升序和成绩降序输出。
import java.util.Collections;import java.util.LinkedList;public class CollectionsTest2 { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); Student2 student1 = new Student2(10, "章1"); Student2 student2 = new Student2(16, "章2"); Student2 student3 = new Student2(19, "章3"); Student2 student4 = new Student2(18, "章4"); //把对象添加到集合中 Collections.addAll(linkedList,student1,student2,student3,student4); Collections.sort(linkedList); for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); } }}class Student2 implements Comparable{ int age; String name; public Student2(int age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "Student2{" + "age=" + age + ", name='" + name + '\'' + '}'; } @Override public int compareTo(Student2 o) { return this.age-o.age; }}
注意点:
1.按照某种规则排序,是重写comparaTo方法时,用什么属性去比较,这个比较的属性就是比较规则排序。
2.实现升序或者降序规则:this(当前调用方法的对象) o(参数传入)
所有比较最底层的逻辑都是发生两两比较逻辑,返回比较结果
正数 this.age > o.age
负数 this.age < o.age
0 this.age==o.age。
6.copy() 复制:
作用:将指定集合中的所有元素复制到另一个集合中。
使用:
(List
7.replaceAll()。替换:
作用:替换集合中所有的旧元素为新元素
使用:
(List list, Object oldVal, Object newVal)
list需要替换的集合,oldval需要被替换的值,newval新的值
使用案例:
把集合中的333替换成字符串“8888”
import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;public class CollectionsTest2 { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); linkedList.add(123); linkedList.add(222); linkedList.add(333); linkedList.add(444); linkedList.add(888); hashSet.add(234); hashSet1.add(666);//替换 Collections.replaceAll(linkedList,333,"8888"); for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i));// } } }}