Java集合框架Collections原理及用法实例

作者:陈彦斌 时间:2021-12-04 18:10:20 

Collections工具类

Java里关于聚合的工具类,包含有各种有关集合操作的静态多态方法,不能实例化(把构造函数私有化)


public class Collections {
 // Suppresses default constructor, ensuring non-instantiability.
 private Collections() {
 }
}

和Collection的区别

  • Collection是接口,提供了对集合对象进行基本操作的通用接口方法,List、Set等多种具体的实现类

  • Collection是工具类,专门从操作Collection接口实现类里面的元素

常见方法

排序

Sort(List list)

按自然排序的升序排序


 public static void main(String[] args) {
   List<String> list = new ArrayList<>();
   list.add("aaaa");
   list.add("zzz");
   list.add("gggg");
   System.out.println(list);
   Collections.sort(list);
   System.out.println(list);
 }

自定义排序规则

Sort(List list,Comparator c),由Comparator控制排序逻辑


 public static void main(String[] args) {
   List<String> list = new ArrayList<>();
    list.add("aaaa");
    list.add("zzz");
    list.add("gggg");
    System.out.println(list);
    //默认升序
    Collections.sort(list, Comparator.naturalOrder());
    System.out.println(list);
    //降序
    Collections.sort(list, Comparator.reverseOrder());
    System.out.println(list);
 }

随机排序

shuffle(List list)


 public static void main(String[] args) {
   List<String> list = new ArrayList<>();
   list.add("1");
   list.add("2");
   list.add("3");
   list.add("4");
   list.add("5");
   list.add("6");
   list.add("7");
   list.add("8");
   list.add("9");
   list.add("10");
   list.add("J");
   list.add("Q");
   list.add("K");
   System.out.println(list);
   Collections.shuffle(list);
   System.out.println(list);
 }

获取最值元素

max(Collection coll)#

默认比较,不适合对象比较

max(Collection coll,Comparator comparator)#

Student.java


package com.cyb.test;

class Student {
 public Student(String name, int age) {
   this.name = name;
   this.age = age;
 }

private int age;
 private String name;

public void setAge(int age) {
   this.age = age;
 }

public int getAge() {
   return age;
 }

public void setName(String name) {
   this.name = name;
 }

public String getName() {
   return name;
 }

@Override
 public String toString() {
   return "Student{" + "age=" + age + ", name='" + name + '\'' + '}';
 }
}

Test03.java


package com.cyb.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class test03 {
 public static void main(String[] args) {
   List<Student> list = new ArrayList<>();
   list.add(new Student("jack", 26));
   list.add(new Student("tom", 29));
   list.add(new Student("mary", 32));
   list.add(new Student("tony", 19));
   list.add(new Student("smith", 41));
   System.out.println(list);
   Student maxAgeStudent = Collections.max(list, new Comparator<Student>() {
     @Override
     public int compare(Student o1, Student o2) {
       return o1.getAge() - o2.getAge();
     }
   });
   System.out.println("maxAgeStudent = "+maxAgeStudent.toString());
   Student mixAgeStudent = Collections.min(list, new Comparator<Student>() {
     @Override
     public int compare(Student o1, Student o2) {
       return o1.getAge() - o2.getAge();
     }
   });
   System.out.println("mixAgeStudent = "+mixAgeStudent.toString());
 }
}

创建不可变集合unmodifiablleXXX()


List<String> list = new ArrayList<>();
list.add("SpringBoot课程");
list.add("架构课程");
list.add("微服务SpringCloud课程"); //设置为只读List集合
list = Collections.unmodifiableList(list);
System.out.println(list);
Set<String> set = new HashSet<>();
set.add("Mysql教程");
set.add("Linux服务器器教程");
set.add("Git教程");
//设置为只读Set集合
set = Collections.unmodifiableSet(set);
System.out.println(set);
Map<String, String> map = new HashMap<>();
map.put("key1", "课程1");
map.put("key2", "课程2");
//设置为只读Map集合
map = Collections.unmodifiableMap(map);
System.out.println(map);

来源:https://www.cnblogs.com/chenyanbin/p/13401255.html

标签:Java,集合,框架,Collections
0
投稿

猜你喜欢

  • 非常适合新手学生的Java线程池超详细分析

    2023-03-03 11:59:54
  • IntelliJ IDEAx导出安卓(Android)apk文件图文教程

    2022-06-22 18:26:16
  • Java深度复制功能与用法实例分析

    2023-07-05 11:23:17
  • Java中Request请求转发详解

    2021-05-25 20:53:42
  • Netty分布式pipeline管道异常传播事件源码解析

    2021-08-15 16:12:02
  • springboot整合微信支付sdk过程解析

    2021-12-30 22:47:29
  • Springboot如何根据实体类生成数据库表

    2023-11-20 13:54:39
  • 基于spring boot 的配置参考大全(推荐)

    2021-11-28 23:32:41
  • Java Web Fragment在项目中使用方法详解

    2022-04-11 14:17:38
  • Java 字符终端上获取输入三种的方式分享

    2021-12-31 04:52:45
  • c#数组详解

    2023-01-31 13:09:08
  • 完整的医院就诊挂号系统基于Spring MVC + Spring + MyBatis实现

    2022-06-03 18:07:05
  • ThreadLocal工作原理及用法案例

    2021-11-13 04:22:39
  • Java Springboot如何基于图片生成下载链接

    2023-05-19 19:57:32
  • 微信开发之使用java获取签名signature

    2022-08-01 10:47:01
  • 解析Java实现随机验证码功能的方法详解

    2022-09-25 23:26:14
  • SpringBoot通过@Value实现给静态变量注入值详解

    2022-04-30 14:30:37
  • Java反射之通过反射获取一个对象的方法信息(实例代码)

    2021-08-07 15:14:46
  • Android应用开发SharedPreferences存储数据的使用方法

    2023-06-23 16:02:47
  • java多线程编程实例

    2022-12-08 18:51:29
  • asp之家 软件编程 m.aspxhome.com