Collections是一个操作Set、List和Map等集合的工具类。

Collections中提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。


排序操作:

  • reverse(List):反转List中元素的顺序;
  • shuffle(List):对List集合元素进行随机排序;
  • sort(List):根据元素的自然顺序对指定List集合元素按升序排序;
  • sort(List,Comparator):根据指定的Conparator产生的顺序对List集合进行排序;
  • swap(List,int,int):将指定List集合中的i和j处的元素进行交换;
package collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class Test5 {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>();
list1.add(2);
list1.add(1);
list1.add(4);
list1.add(3);
System.out.println("原始的list1:"+list1);
Collections.reverse(list1);
System.out.println("反转之后的list1:"+list1);
Collections.sort(list1);
System.out.println("排序之后的list1:"+list1);
Collections.shuffle(list1);
System.out.println("打乱之后的list1:"+list1);
List<Student> list2 = new ArrayList<Student>();
Student s1 = new Student("tom",21);
Student s2 = new Student("jack",16);
Student s3 = new Student("bob",32);
list2.add(s1);
list2.add(s2);
list2.add(s3);
Collections.sort(list2, new Student());
System.out.println("按照年龄降序进行排序:");
for(Student stu:list2) {
System.out.println("name="+stu.name+","+"age="+stu.age);
}
}
}
class Student implements Comparator<Student>{
String name;
int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
if(o1.age>o2.age) {
return -1;
}else if (o1.age<o2.age) {
return 1;
}else {
return 0;
}
}
}

输出:

原始的list1:[2, 1, 4, 3]
反转之后的list1:[3, 4, 1, 2]
排序之后的list1:[1, 2, 3, 4]
打乱之后的list1:[1, 3, 2, 4]
按照年龄降序进行排序:
name=bob,age=32
name=tom,age=21
name=jack,age=16


查找、替换操作:

  • Object.max(Collection):根据元素的自然顺序返回指定集合中的最大元素;
  • Object.max(Collection,Comparator):根据Comparator指定的顺序,返回指定集合中的最大元素;
  • Object.min(Collection):根据元素的自然顺序返回指定集合中的最小元素;
  • Object.max(Collection):根据Comparator指定的顺序,返回指定集合中的最小元素;
  • int frequency(Collection,Object):返回指定集合中指定元素的出现次数;
  • boolean replaceAll(List list,Object oldVal,object newVal):使用新值替换原来的值;
package collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class Test5 {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>();
list1.add(2);
list1.add(1);
list1.add(4);
list1.add(3);
list1.add(1);
System.out.println(list1);
System.out.println(Collections.max(list1));
System.out.println(Collections.min(list1));
System.out.println(Collections.frequency(list1,1));
System.out.println(Collections.replaceAll(list1, 1,2));
System.out.println(list1);
List<Student> list2 = new ArrayList<Student>();
Student s1 = new Student("tom",21);
Student s2 = new Student("jack",16);
Student s3 = new Student("bob",32);
list2.add(s1);
list2.add(s2);
list2.add(s3);
for(Student stu:list2) {
System.out.println("name="+stu.name+","+"age="+stu.age);
}
System.out.println(Collections.max(list2,new Student()).name
+"/"+Collections.max(list2,new Student()).age);
System.out.println(Collections.min(list2,new Student()).name
+"/"+Collections.min(list2,new Student()).age);
// Collections.sort(list2, new Student());
// System.out.println("按照年龄降序进行排序:");
// for(Student stu:list2) {
// System.out.println("name="+stu.name+","+"age="+stu.age);
// }
}
}
class Student implements Comparator<Student>{
String name;
int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
if(o1.age>o2.age) {
return 1;
}else if (o1.age<o2.age) {
return -1;
}else {
return 0;
}
}
}

输出:

[2, 1, 4, 3, 1]
4
1
2
true
[2, 2, 4, 3, 2]
name=tom,age=21
name=jack,age=16
name=bob,age=32
bob/32
jack/16


同步控制:Collections中提供了多个synchronizedXxx()方法,该方法可以使指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时线程安全问题。

java之操作集合的工具类--Collections的更多相关文章

  1. 操作集合的工具类Collections

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

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

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

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

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

  4. 操作集合的工具类:Collections

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

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

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

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

    Collections类 java.utils.Collections是集合工具类,用来对集合进行操作. Collections类的常用方法 这里介绍四个常用方法: addAll(Collection ...

  7. JAVA基础学习day17--集合工具类-Collections

    一.Collection简述 1.1.Collection与Collections的区别 Collections是集合的静态工具类 Collection:是集合的顶级接口 二.Sort 2.1.sor ...

  8. java集合框架工具类Collections,集合的操作

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

  9. 集合框架工具类--Collections排序

    package ToolCollectionsDemo; import java.util.ArrayList; import java.util.Collections; import java.u ...

随机推荐

  1. Python自动输入【新手必学】

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈 ...

  2. get请求被浏览器跨域的同源策略请求机制拦截,但是get请求是否请求到了服务器呢

    浏览器会拦截跨域请求,但是只是拦截返回结果,请求还是会被发送到服务器. 请求因为跨域被拦截后,会改成 OPTIONS 请求送达服务器,这样服务器就可以知道有人在请求.

  3. Ubuntu修改时间

    Ubuntu修改时区和更新时间 先查看当前系统时间 date -R 结果时区是:+0000 我需要的是东八区,这儿显示不是,所以需要设置一个时区 运行 tzselect 在这里我们选择亚洲 Asia, ...

  4. mysql统计天、周、月、季度、半年、年

    之前在网上搜索按时间统计,发现不是很全 ,接着别人的思路进行延伸下, mysql统计天.周.月.季度.半年.年 前期工作创建辅助表 CREATE TABLE num (i INT); ),(),(), ...

  5. SpringBoot电商项目实战 — 前后端分离后的优雅部署及Nginx部署实现

    在如今的SpringBoot微服务项目中,前后端分离已成为业界标准使用方式,通过使用nginx等代理方式有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多 ...

  6. javascript对url进行编码和解码

    这里总结下JavaScript对URL进行编码和解码的三个方法. 为什么要对URL进行编码和解码 只有[0-9[a-Z] $ - _ . + ! * ' ( ) ,]以及某些保留字,才能不经过编码直接 ...

  7. Asp.net 学习记录(一)使用asp.net 构建webAPI接口

    此系列使用Asp.net构建前后端分离的博客网站. 创建一个asp.net项目 我们这里使用的是空模板,把Https配置去掉(安全先不配置) 构建webapi接口有很多方法,在这里我们选择最简单的2种 ...

  8. mysql的MHA高可用

    一.MHA简介 作者简介 松信嘉範: MySQL/Linux专家 2001年索尼公司入职 2001年开始使用oracle 2004年开始使用MySQL 2006年9月-2010年8月MySQL从事顾问 ...

  9. Spring Boot 设置项目名后静态文件相对路径问题

    出现问题的原因 server.servlet.context-path=testDemospring.mvc.static-path-pattern=/static/**定义项目名和静态资源路径后发现 ...

  10. Sqlite—Python接口

    #!/usr/bin/env python # -*- coding:utf-8 -*- import sqlite3,os,time import traceback class Sqlite(): ...