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. 1、awk打开多个文件的方法

    转载:http://www.cnblogs.com/Berryxiong/p/6209324.html 1.当awk读取的文件只有两个的时候,比较常用的有三种方法(1)awk 'NR==FNR{... ...

  2. 269D Maximum Waterfall

    传送门 题目大意 给出一些墙,水从高往低流,每次只能到达一面墙,选择一个路径,使得路径上的流量的最小值最大. 分析 这是一道经典的扫描线题,我们发现能够合法的线段对数至多只有n对.将一条线段拆成两个点 ...

  3. Spark的序列化

    spark的序列化主要使用了hadoop的writable和java的Serializable. 说到底就是使用hadoop的writable替换了java的默认序列化实现方式. class Seri ...

  4. 《Spring实战》-2

    装配Bean 1.装配wiring,即创建应用对象之间的协作关系的行为,者也是依赖注入的本质. 2.创建Spring配置 从Sring3.0开始,Spring容器提供了两种配置Bean的方式: XML ...

  5. 多线程学习-基础(一)Thread和Runnable实现多线程

    很久没记录一些技术学习过程了,这周周五的时候偶尔打开“博客园”,忽然让我产生一种重拾记录学习过程的想法,记录下学习研究过程的一点一滴,我相信,慢慢地就进步了!最近想学习一下多线程高并发,但是多线程在实 ...

  6. const char *p; char const *p; char * const p的区别

    请看下面三种定义: const char *p; char const *p; char * const p; 首先看第一种,我们先看p,本着”从里往外”的原则,p是一个char *类型的变量,但ch ...

  7. java 的exception throw try catch

    import java.util.*; public class MyException extends Exception { private static final Exception Exce ...

  8. c++特别要点:多态性与虚函数

    本来是准备在工厂模式中顺便整理.但粗略浏览了,内容还是很多,需要单独开一篇. 一.什么是多态性? 多态性可以概括为“一个接口,多种方法”. 多态与非多态的区别在于“成员函数调用地址的早绑定和晚绑定”. ...

  9. Win10下Tensorflow+GPU的环境配置

    不得不说,想要为深度学习提前打好框架确实需要花费一番功夫.本文主要记录了Win10下,Cuda9.0.Cudnn7.3.1.Tensorflow-gpu1.13.1.python3.6.8.Keras ...

  10. AttributeError: ‘module’ object has no attribute ‘ximgproc’(OpenCV)

    问题描述: 使用opecv实现选择性搜索(selective search)的时候,执行如下代码时报了上述标题的错误. “ss = cv2.ximgproc.segmentation.createSe ...