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

 更新时间:2020年08月04日 09:52:03   作者:陈彦斌  
这篇文章主要介绍了Java集合框架Collections原理及用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java生成excel并导出到对应位置的方式

    java生成excel并导出到对应位置的方式

    这篇文章主要介绍了java生成excel并导出到对应位置的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java程序生成Access文件代码实例

    Java程序生成Access文件代码实例

    这篇文章主要介绍了Java程序生成Access文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java实现视频初步压缩和解压的代码示例

    Java实现视频初步压缩和解压的代码示例

    从摄像头读取每一帧的图片,用一些简单的方法将多张图片信息压缩到一份文件中(自定义的视频文件),自定义解码器读取视频文件,并将每帧图片展示成视频,本文主要介绍了Java实现视频初步压缩和解压,需要的朋友可以参考下
    2023-10-10
  • springMvc请求的跳转和传值的方法

    springMvc请求的跳转和传值的方法

    本篇文章主要介绍了springMvc请求的跳转和传值的方法,这里整理了几种跳转方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • java字符串与格式化输出的深入分析

    java字符串与格式化输出的深入分析

    本篇文章是对java字符串与格式化输出进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Springboot访问html页面的教程详解

    Springboot访问html页面的教程详解

    这篇文章主要介绍了Springboot访问html页面的教程,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2018-03-03
  • 详解Spring Retry实现原理

    详解Spring Retry实现原理

    这篇文章主要介绍了详解Spring Retry实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Java 位图法排序的使用方法

    Java 位图法排序的使用方法

    本篇文章,小编将为大家介绍关于Java 位图法排序的使用方法,有需要的朋友可以参考一下
    2013-04-04
  • Java+opencv3.2.0实现重映射

    Java+opencv3.2.0实现重映射

    这篇文章主要为大家详细介绍了Java+opencv3.2.0实现重映射的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Java面试题之MD5加密的安全性详解

    Java面试题之MD5加密的安全性详解

    MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加密算法。本文将通过示例讨论下MD5的安全性,感兴趣的可以了解一下
    2022-10-10

最新评论