首页IT科技collection什么牌子衣服(Collections类详解)

collection什么牌子衣服(Collections类详解)

时间2025-04-30 06:33:37分类IT科技浏览4978
导读:目录...

目录

一.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 <T> boolean addAll(Collection<T> c, T... elements)   。添加一些元素

3.public static <T> void sort(List<T> list                  ,Comparator<? super T> )                   。  排序      ,将集合中元素按照指定规则排序

4.public static <T extends Comparable<? super T>> void sort(List<T> list)               。  排序          ,将集合中元素按照默认规则排序。

5.public static int binarySearch(List list, Object key)                。查找                   ,使用二分搜索法搜索指定的 List 集合         ,以获得指定对象在 List 集合中的索引                  。如果要使该方法可以正常工作      ,则必须保证 List 中的元素已经处于有序状态   。

6.public static void copy(List <? super T> dest,List<? extends T> src)  复制                   , 用于将指定集合中的所有元素复制到另一个集合中             。

7.public static void replaceAll()                  。替换            ,替换集合中所有的旧元素为新元素

1.shuffle()随机排序:

shuffle方法用于将集合中的元素   ,随机打乱原来的顺序      。

          注意:shuffle中的集合只能是List集合          。Set集合会报错                   。

使用案例:

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(); inkedList.add(123); linkedList.add(456); linkedList.add(234); linkedList.add(567); for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); } //打乱顺序 Collections.shuffle(linkedList); System.out.println("==========="); System.out.println("打乱顺序之后:"); for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); } } }

运行结果:

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<Object>)

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<Student2>{ 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 <? super T> dest,List<? extends T> src)

dest是目标集合         ,src是原集合               。把原集合中的元素放到目标集合中。

使用注意点:

1                。原集合复制到目标集合中去      ,原集合会覆盖掉目标集合中元素                   ,这个覆盖从索引值为0开始覆盖            ,直到原集合复制完毕                  。

2.目标集合的长度至少和源集合的长度相同   ,如果目标集合的长度更长                   ,则不影响目标集合中的其余元素   。如果目标集合长度不够而无法包含整个源集合元素               ,程序将抛出 IndexOutOfBoundsException 异常             。

3.copy方法也只能复制List集合,不能复制set集合

个人见解:由于会覆盖掉目标集合的元素                ,我觉得没有太多的用处

使用案例:

1.把集合1赋值到集合2中

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 linkedList1 = new LinkedList(); //创建两个set集合 HashSet hashSet = new HashSet(); HashSet hashSet1 = new HashSet(); linkedList1.add(123); linkedList1.add(222); linkedList.add(333); linkedList.add(444); linkedList.add(888); hashSet.add(234); hashSet1.add(666); Collections.copy(linkedList, linkedList1); //使用copy方法复制set会报错 // Collections.copy(hashSet,hashSet1); for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i)); // } } } }

运行结果:

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)); // } } } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
英国卫裤的七大危害暴利产品项目:英国卫裤 看小说能赚钱的软件中哪一个最好用看小说就可以赚钱的软件有哪些-揭秘一个写小说月入十万的作者,平时都有哪些副业。 #创业日记