Java 集合的工具类Collections的常用方法

时间:2021-10-02 15:39:46

Collections类

java.utils.Collections是集合工具类,用来对集合进行操作。

Collections类的常用方法

这里介绍四个常用方法:

addAll(Collection<T> c, T ... elements)

shuffle(List<?> list)

sort(List<r> list)

sort(List<T> list, Comparator<? super T>)

public static <T> boolean adda1l(Collection<T> c, T ... elements)往集合中添加一些元素。

public static void shuff1e(List<?> 1ist)打乱顺序:打乱集合顺序。

public static <T> void sort(List<r> 1ist):将集合中元素按照默认规则排序。

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

addAll(Collection<T> c, T ... elements)方法

参数说明:

Collection<T> c:是要被添加元素的集合

T ... elements:可变参数,是要给集合添加的元素

方法功能:

往集合中添加一些元素

例子:

import java.util.Collections;
import java.util.HashSet; public class DemoCollections {
public static void main(String[] args) {
// 创建一个HashSet集合
HashSet<String> hashSet = new HashSet<>(); // 调用Collections类的静态方法addAll,往集合hashSet中添加多个元素
Collections.addAll(hashSet, "a", "b", "c", "d", "e", "f", "g"); // 输出HashSet集合
System.out.println(hashSet);
}
}
输出结果:
[a, b, c, d, e, f, g]

shuffle(List<?> list)方法

参数说明:

List<?> list:表示传入的集合,即该方法传入的参数是一个集合

方法功能:

打乱集合的顺序。

例子:

import java.util.ArrayList;
import java.util.Collections; public class DemoCollectionsShuffle {
public static void main(String[] args) {
// 创建一个ArrayList集合
ArrayList<String> arrayList = new ArrayList<>(); // 往arrayList集合中添加元素
Collections.addAll(arrayList, "A", "B", "C", "D", "E", "F", "G");
System.out.println("没有打乱时的集合:" + arrayList); // 调用Collections类的静态方法shuffle,将集合arrayList里面的元素顺序打乱
Collections.shuffle(arrayList);
System.out.println("打乱以后的集合:" + arrayList);
}
}
输出结果:
没有打乱时的集合:[A, B, C, D, E, F, G]
打乱以后的集合:[D, B, C, E, A, G, F]

sort(List<r> list)方法

参数说明:

List<?> list:表示传入的集合,即该方法传入的参数是一个集合

方法功能:

对集合进行排序(默认为升序排序)

例子:

import java.util.ArrayList;
import java.util.Collections; public class Demo01CollectionsSort {
public static void main(String[] args) {
// 创建一个ArrayList集合
ArrayList<Integer> arrayList = new ArrayList<>(); // 往arrayList集合中添加元素
Collections.addAll(arrayList, 1, 2, 10, 9, 8);
System.out.println("没有排序时的集合:" + arrayList); // 调用sort()方法,将集合arrayList里面的元素进行排序
Collections.sort(arrayList);
System.out.println("排序后的集合:" + arrayList);
}
}
输出结果:
没有排序时的集合:[1, 2, 10, 9, 8]
排序后的集合:[1, 2, 8, 9, 10]

sort(List<T> list, Comparator<? super T>)方法

首先,说明一下,这个方法仅做了解即可,学习过程中通常都是默认使用sort(List<T> list)方法的。

参数说明:

List<?> list:表示传入的集合,即该方法传入的第一个参数是一个集合

Comparator<? super T>:这是一个排序规则,自定义(覆盖重写该接口的排序方法)

方法功能:

对集合进行排序(默认为升序排序)

例子:

// 随便创建一个Person类
public class Person {
private String name;
private int age; public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

自己定义一个排序规则进行测试:

// 举例
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; public class Demo02CollectionsSort { public static void main(String[] args) {
// 创建一个ArrayList集合
ArrayList<Person> arrayList = new ArrayList<>(); // 往arrayList集合中添加元素,集合存储的数据的类型是自定义类型(Person)
Collections.addAll(
arrayList,
new Person("LeeHua", 20),
new Person("WanTao", 18),
new Person("XiaMin", 22),
new Person("HonMao", 22)
);
System.out.println("没有排序时的集合:" + arrayList); // 自定义排序规则,对arrayList集合进行排序
Collections.sort(arrayList, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
// 年龄相等,按照名字排序
while (o1.getAge() - o2.getAge() == 0) {
if (o1.getName().length() > o2.getName().length()) {
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
return 1;
}
else if (o1.getName().length() < o2.getName().length()) {
for (int i = 0; i < o1.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
return - 1;
}
else {
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
return 0;
}
}
// 年龄不相等,按照年龄排序
return o1.getAge() - o2.getAge();
}
});
System.out.println("排序以后的集合:" + arrayList);
}
}
输出结果:
没有排序时的集合:[Person{name='LeeHua', age=20}, Person{name='WanTao', age=18}, Person{name='XiaMin', age=22}, Person{name='HonMao', age=22}]
排序以后的集合:[Person{name='WanTao', age=18}, Person{name='LeeHua', age=20}, Person{name='HonMao', age=22}, Person{name='XiaMin', age=22}]

排序规则代码的理解:

new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
// 首先判断年龄是否相等
while (o1.getAge() - o2.getAge() == 0) {
// 如果this年龄 == object年龄,那么就按名字的字母(char code)比较
// 按照名字的每个字母来比较
if (o1.getName().length() > o2.getName().length()) {
// o1的名字长度 > o2的名字长度
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
// 假如o2的名字的所有字母,按顺序都与o1的名字对应位数的字母相等,字母长度大的排后,即o1排后
return 1;
}
// o1的名字长度 < o2的名字长度
else if (o1.getName().length() < o2.getName().length()) {
for (int i = 0; i < o1.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
// 假如o1的名字的所有字母,按顺序都与o2的名字对应位数的字母相等,字母长度大的排后,即o2排后
return - 1;
}
// o1的名字长度 = o2的名字长度
else {
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
// 假如o1的名字的所有字母,按顺序都与o2的名字对应位数的字母相等,那么按照arrayList集合的添加顺序排序
return 0;
}
}
// 年龄不相等,按照年龄排序
return o1.getAge() - o2.getAge();
}
}

Java 集合的工具类Collections的常用方法的更多相关文章

  1. java集合框架工具类Collections&comma;集合的操作

    1 import java.util.*; public class asList { public static void main(String args[]) { // int arr[] = ...

  2. 操作集合的工具类Collections

    1       操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操 ...

  3. Java集合----Collection工具类

    Collections 工具类 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了 ...

  4. JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)

    package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...

  5. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List&lt ...

  6. java之操作集合的工具类--Collections

    Collections是一个操作Set.List和Map等集合的工具类. Collections中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控 ...

  7. JAVA基础——Arrays工具类十大常用方法

    Arrays工具类十大常用方法 原文链接:http://blog.csdn.net/renfufei/article/details/16829457 0. 声明数组 String[] aArray ...

  8. Java-集合第六篇操作集合的工具类Collections

    1.Java提供了一个操作Set.List.Map等集合的工具类:Collections. 工具类中提供的方法主要针对Set.List.Map的排序.查询.修改等操作,以及将集合对象设置为不可变.对集 ...

  9. Java 集合框架工具类

    Collections Arrays Collections 集合框架的工具类, 里面的方法都是静态的, 可以直接使用类名调用 常用方法 1. sort(List<T> list); // ...

随机推荐

  1. Android的px、dp和sp

    Android的px.dp和sppx: 即像素,1px代表屏幕上一个物理的像素点:偶尔用到px的情况,是需要画1像素表格线或阴影线的时候. dp: 这个是最常用但也最难理解的尺寸单位.它与“像素密度” ...

  2. 安装完MySQL数据库,在服务列表里找不到MySQL的解决办法

    安装MySQL数据库完成后,在控制面板的服务列表里找不到MySQL服务启动项解决方案:(参考以下命令)1.打开cmd,切换到mysql的bin目录下 (dos命令切换目录||1.cd\ 返回到根目录, ...

  3. 使用Unity3D引擎开发赛车游戏

    Car Tutorial 在Unity3D的Asset Store有一个赛车的Demo —— Car Tutorial,看起来特别酷的赛车游戏Demo,不过我还没有下载下来,因为在公司下载Assets ...

  4. ios中get&comma;post和解压缩用法

    一. 网络概念 1. 在Linux系统上,运行的Web服务器的名字叫做Apache 2. 所有的http访问都是基于html或者相关的文件,例如:php,asp,jsp,asp.net 这些文件最终都 ...

  5. tomcat 运行异常Cannot create PoolableConnectionFactory &lpar;到主机 的 TCP&sol;IP 联接失败)(用户sa登录失败)

    这是在java web中启动tomcat遇到的问题,因为这个问题,整整折腾了两天的时间,找了很都解决方案,但终究还是不能正常.现在整理下这个问题的解决方案: 首先,出这个问题之前,请检查一下的问题,这 ...

  6. for update和for update nowait的区别和使用

    首先,for update 和for update nowait 是对操作的数据行进行加锁,在事务提交前防止其他操作对数据的修改. for update 和for update nowait主要区别在 ...

  7. 谈谈对web标准的理解

    Web标准不是某一个标准,而是由一系列标准组合而成.网页主要由三部分组成:结构.表现和行为.对应的标准也分三方面:结构化标准语言主要包括XHTML和HTML以及XML,表现标准语言主要包括CSS,行为 ...

  8. magento后台登陆404、Front controller reached 100 router match iterations的解决方案

    (1)执行如下sql SET SQL_SAFE_UPDATES=; SET FOREIGN_KEY_CHECKS=; UPDATE `core_store` SET store_id = WHERE ...

  9. css3——webkit-animation动画

    -webkit-animation:仍旧是一个复合属性,   -webkit-animation: name duration timing-function delay iteration_coun ...

  10. Android Gradle 学习笔记(一):Gradle 入门

    官网地址:https://gradle.org/. 一.配置 Gradle 环境 安装Gradle之前必须要配置好Java环境,要求JDK 6 以上,并且在环境变量配置好JAVA_HOME.查看Jav ...