1、简介:

    Collections是一个工具类

    1.1  排序

      a,正序    sort是其静态方法,有2种参数形式:        

    public static <T extends Comparable<? super T>> void sort(List<T> list) {

       list.sort(null);

    }

    public static <T> void sort(List<T> list, Comparator<? super T> c) {

       list.sort(c);

    }

    1.2  案例

  【对基本类型排序】

    对于Integer、String类型,已经实现了Comparable接口

      public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}

       public final class Integer extends Number implements Comparable<Integer> {}

    

package com.an.collection.list;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; /**
* 基本类型测试
*/
public class CollectionsTestOne { public static void main(String[] args){
List<Integer> list=new ArrayList<Integer>(5);
list.add(9);
list.add(4);
list.add(3);
list.add(2);
list.add(8); //正序
Collections.sort(list);
System.out.println(list); //倒序
Collections.reverse(list);
System.out.println(list); //自定义倒序
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
//o1-o2为正序、o2-o1为倒序
return o2-o1;
}
});
System.out.println(list); Integer max=Collections.max(list);
System.out.println(max); Integer min=Collections.min(list);
System.out.println(min); System.out.println("================================="); List<String> list2=new ArrayList<String>(5);
list2.add("d");
list2.add("a");
list2.add("c");
list2.add("e");
list2.add("m"); //正序
Collections.sort(list2);
System.out.println(list2); //倒序
Collections.reverse(list2);
System.out.println(list2); //自定义倒序
Collections.sort(list2, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//o2.compareTo(o1)为倒序,o1.compareTo(o2)为正序
return o2.compareTo(o1);
}
});
System.out.println(list2); String maxString=Collections.max(list2);
System.out.println(maxString); String minString=Collections.min(list2);
System.out.println(minString);
}
}

  执行结果:

  

  【自定义数据类型排序】


package com.an.collection.list;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; /**
* 自定义数据类型
*/
public class CollectionsTestTwo { public static void main(String[] args){
     //方式1:普通java类,使用2个参数的方法
Person1 p1=new Person1("a",1);
Person1 p2=new Person1("d",5);
Person1 p3=new Person1("b",2);
Person1 p4=new Person1("e",3);
Person1 p5=new Person1("m",9); List<Person1> list=new ArrayList<Person1>(5);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5); Collections.sort(list, new Comparator<Person1>() {
@Override
public int compare(Person1 o1, Person1 o2) {
//按姓名正序
return o1.getName().compareTo(o2.getName());
}
});
System.out.println(list); Collections.sort(list, new Comparator<Person1>() {
@Override
public int compare(Person1 o1, Person1 o2) {
//按姓名倒序
return o2.getName().compareTo(o1.getName());
}
});
System.out.println(list); Collections.sort(list, new Comparator<Person1>() {
@Override
public int compare(Person1 o1, Person1 o2) {
//按年龄正序
return o1.getAge()-o2.getAge();
}
});
System.out.println(list); Collections.sort(list, new Comparator<Person1>() {
@Override
public int compare(Person1 o1, Person1 o2) {
//按年龄倒序
return o2.getAge()-o1.getAge();
}
});
System.out.println(list);
     
     //方式2:普通类实现Comparable接口
List<Person2> person2List=new ArrayList<Person2>(5);
person2List.add(new Person2("c",1));
person2List.add(new Person2("a",3));
person2List.add(new Person2("b",2));
person2List.add(new Person2("e",5)); Collections.sort(person2List);
System.out.println(person2List);
}
} class Person1{
private String name;
private int age; public Person1(){ } public Person1(String name,int age){
this.name=name;
this.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;
} @Override
public String toString() {
return this.name+":"+this.getAge();
}
} class Person2 implements Comparable<Person2>{
private String name;
private int age; public Person2(){ } public Person2(String name,int age){
this.name=name;
this.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;
} @Override
public String toString() {
return this.name+":"+this.getAge();
} @Override
public int compareTo(Person2 o) {
//按名称正序
//return this.getName().compareTo(o.getName());
//按名称倒序
//return o.getName().compareTo(this.getName());
//按年龄正序
//return this.getAge()-o.getAge();
//按年龄倒序序
return o.getAge()-this.getAge();
}
}
 

  执行结果:

      b,倒序    public static void reverse(List<?> list) 

  

 

    

JavaSE---Collections的更多相关文章

  1. JavaSE Collections类 , Iterator迭代器 , 增强for循环

    Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...

  2. 对象大小对比之Comparable与Comparator

    一 概述 1.Comparable与Comparator使用背景 数值型数据(byte int short long float double)天生可对比大小,可排序,String实现了Compara ...

  3. JavaSE复习总结之集合(Collection)

    Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...

  4. JAVASE笔记回顾

    第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...

  5. 基础1 JavaSe基础

    JavaSe基础 1. 九种基本数据类型的大小,以及他们的封装类 boolean 无明确指定 Boolean char 16bits Character byte 8bits Byte short 1 ...

  6. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  7. 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版

    原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...

  8. collections和collection 还有集合

    概述 一个集合,即collection,有时也被称为一个容器,是将多个元素聚集成一个单元的对象.Collections常被用来存储.检索.操纵聚集数据以及聚集数据间的通信.一般来说,Collectio ...

  9. JavaSE面试题

    JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...

  10. javaSE总结

    1 java的历史 1991-至今  詹姆斯-高斯林  SUN公司 ORACLE 2009年 2 java的版本 javaSE  java的标准桌面级开发 javaEE  企业级web开发 javaM ...

随机推荐

  1. java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?

    这个从二进制来解释: int 是 32 位,也就是最多能表示长度为 32 位的二进制整数.第一位是符号位,表示正负,0 表示正的,1 表示负的.当首位为 1(为负)时,把所有的位取反(0 变成 1,1 ...

  2. Notepad++一键编译运行(Python、Java、C++)

    Python 需要事先安装Python配置好环境变量.建议使用Anaconda,方便. 在Notepad按F5,输入如下 cmd /k chdir /d $(CURRENT_DIRECTORY) &a ...

  3. HDU - 4597 Play Game(博弈dp)

    Play Game Alice and Bob are playing a game. There are two piles of cards. There are N cards in each ...

  4. 《Linux内核设计与实现》读书笔记(四)- 进程的调度

    主要内容: 什么是调度 调度实现原理 Linux上调度实现的方法 调度相关的系统调用 1. 什么是调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计 ...

  5. HTTP状态码了解

    1xx   - - 消息 2xx   - - 成功 3xx   - - 重定向 4xx   - - 请求错误 5xx   - - 服务器错误 1xx-信息提示 这些状态代码表示临时的响应.客户端在收到 ...

  6. [SinGuLaRiTy] (树形)数据结构题目复习

    [SinGuLaRiTy-1023] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 普通平衡树 题目描述 你需要写一种数据结构(可参考题目标 ...

  7. 【NOIP 2009】最优贸易

    描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通 ...

  8. jdk 1.6.0_39 下载

    Java SE Development Kit 6u39 Product / File Description File Size Download password Linux x86 65.42 ...

  9. 打谷机 BZOJ 1603 模拟

    Farmer John有一个过时的打谷机(收割小麦),它需要带子来带动.发动机驱动轮1总是顺时针旋转的,用来带动转轮2,转轮2来带动转轮3,等等.一共有n(2<=n<=1000)个转轮(n ...

  10. COM编程快速入门

    COM编程快速入门 COM编程快速入门 http://www.vckbase.com/index.php/wv/1642   COM是一种跨应用和语言共享二进制代码的方法.与C++不同,它提倡源代码重 ...