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. noi.ac day1t3 Sort

    传送门 分析 快排的原理是以任意一个数为标准,然后把所有小于它的数换到它的左边,所有大于它的数换到它的右边.我们就使用快排的思路,分治整个区间.对于每个区间以排好序的这个数列的中间位置的值为标准,然后 ...

  2. WOJ 18 动态无向图

    一开始我是不会写的,后来点开了题解: 无话可说……那就写吧……然而第一发跑成暴力分,后来加了一个优化:就是在询问里面提到过的边都不用再加了. 然后……然后就过了呀…… 其实还有面向数据的编程的骚操作… ...

  3. java全栈day04--方法

    day04内容介绍 1  方法基础知识 2  方法高级内容 3  方法案例 一  方法的概念 A:为什么要有方法 提高代码的复用性 B   什么是方法 完成特定功能的代码块 修饰符  返回值类型  方 ...

  4. C++面试笔记--继承和接口

    整个C++程序设计全面围绕面向对象的方式进行.类的继承特性是C++的一个非常重要的机制.继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类没有的成分. 在面试过程中,各大企 ...

  5. HTML 4.0 触发事件

    HTML 4 的新特性之一是可以使 HTML 事件触发浏览器中的行为,比方说当用户点击某个 HTML 元素时启动一段 JavaScript. 在现代浏览器中都内置有大量的事件处理器.这些处理器会监视特 ...

  6. 【IMOOC学习笔记】多种多样的App主界面Tab实现方法(二)

    Fragment实现Tab 首先把activity_main.xml 文件中的ViewPager标签改成Fragment标签 <FrameLayout android:id="@+id ...

  7. 对bookinfo.dat的说明

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2008.08.03 现在论坛推出的下载工具五花八门,但是有不少都忽视了bookinfo.dat的生成,因此有必要说明一下这个 ...

  8. [Windows] VS打开资源文件(.rc)时显示 error RC2247 : SYMBOL name too long

    源解决方案:error RC2247 : SYMBOL name too long 解决方法: 将所有要包含的文件用 APSTUDIO_HIDDEN_SYMBOLS 宏包起来,保存后关闭当前的资源文件 ...

  9. Weekly Contest 114

    955. Delete Columns to Make Sorted II We are given an array A of N lowercase letter strings, all of ...

  10. 读懂sql_trace

    TKPROF: Release 11.2.0.1.0 - Development on 星期一 11月 3 21:39:41 2014 Copyright (c) 1982, 2009, Oracle ...