Collections -集合排序compareTo方法重写,shuffle,addall

package cn.learn.collection.Collections;
/*
排序的对象的类,实现comparable借口,重写compareto方法
若要打印必须重写toString方法,会默认调用
 */
public class Person implements Comparable<Person>{
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Person{" +
                "name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ‘}‘;
    }

    public Person() {
    }

    public Person(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 int compareTo(Person o) {
        return this.getAge() - o.getAge();//年龄升序排序
        //return 0;//认为元素都是相同的
    }
}
 1 package cn.learn.collection.Collections;
 2
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Collections;
 6 import java.util.Comparator;
 7
 8 /*
 9     java.util.Collections是集合工具类
10
11     注意:sort(List<T> list)使用前提
12     被排序的集合里面存储的元素,若不符合java里面自带的方法,是自定义类型
13     需要在一般是生成对象的类中
14     实现Comparable,重写Compareto定义排序规则
15     o - this 降序
16
17     sort(List<E>,Comparator<? super T>)
18         Comparable与Comparator的区别
19         Comparable:自己(this)和别人(参数)比较,需要自己在类中重写comparTo方法
20         Comparator:相当于找一个第三方的裁判,比较两个 ,是一个接口 ,重写内部类
21
22
23
24  */
25 public class CollectionsApi {
26     public static void main(String[] args) {
27         ArrayList<Integer> num = new ArrayList<>();
28         num.add(5);
29         num.add(8);
30         num.add(7);
31         num.add(27);
32         //太麻烦,可以用集合工具类,添加多个元素,返回的是Boolean值
33         Collections.addAll(num,5,6,8,12);
34         System.out.println(num);//[5, 8, 7, 27, 5, 6, 8, 12]
35
36         //shuffle(弄混)方法,打乱集合顺序
37         Collections.shuffle(num);
38         System.out.println(num); //[8, 12, 27, 5, 5, 7, 6, 8]
39
40         //sort集合排序,默认升序
41         Collections.sort(num);
42         System.out.println(num); //[5, 5, 6, 7, 8, 8, 12, 27]
43
44         //如果不是字符和整数,对对象进行排序,需要重写排序方法
45         //根据年龄进行升序排序
46         ArrayList<Person> people=new ArrayList<>();
47         people.add(new Person("ap",12));
48         people.add(new Person("nha",16));
49         people.add(new Person("nihp",10));
50         people.add(new Person("hp",10));
51         Collections.sort(people);   //排序
52         System.out.println(people);
53
54
55         //sort(List<E>,Comparator<? super T>)
56         Collections.sort(people, new Comparator<Person>() {
57             //重写比较规则,降序
58             @Override
59             public int compare(Person o1, Person o2) {
60                 //如果年龄一样,比较名字长度升序,年龄降序
61                 int age= o2.getAge() - o1.getAge();
62                 if(age == 0){
63                     age=o1.getName().length()-o2.getName().length();
64                 }
65                 return age;
66             }
67         });
68         System.out.println(people);
69
70     }
71 }

原文地址:https://www.cnblogs.com/huxiaobai/p/11509447.html

时间: 2024-11-05 21:38:30

Collections -集合排序compareTo方法重写,shuffle,addall的相关文章

关于自定义 List集合排序的方法!

大致流程: 排序是用到排序的接口Comparator<T>你要先建一个类实现比较器Comparator //大致流程public class StuComp implements Comparator<Student> { public int compare(Student o1, Student o2) { return o1.getName().compareToIgnoreCase(o2.getName()); } } 然后在Collections.sort(list);的

Java中List集合排序的方法 比较器的使用 根据学生对象数序 语文 英语成绩总和进行sort排序

package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class Test2_ObjectIO { @SuppressWarnings("unchecked") public static void main(Strin

java集合排序方法sort的使用

转自  http://blog.csdn.net/a1165117473/article/details/6965652 /** To change this template, choose Tools | Templates* and open the template in the editor.*/ package com.city.test; import java.util.Arrays;import java.util.Comparator;/**** @author LiuB*/

java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返回值有:负数,零,正数.分别表示小于,等于,大于 * 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法 * 元素定义时,需要实现Comparable接口 * */ 1 import java.util.Iterator; 2 import java.util.Tr

java中重写Comparator对两个list集合排序

public class test{ public static void main(String[] args) { List<LeaveRequest>  LvRequestList=new List<LeaveRequest>(); List<OtRequest> otRequestList=new List<OtRequest>(); List   allList=new List(); allList.addAll( LvRequestList);

正确重写equals方法和compareTo方法

一.概述 程序要对一堆数据元素排序,查找,增加删除.数据节点 class Node{ int type; int index; int score; } 规则: 1)对象相等:两个节点n1与n2,如果n1.type == n2.type && n1.index == n2.index则n1等于n2 2)排序:升序,比较score,score相同则比较type,type相同则比较index.最开始我使用TreeMap存储.实现Comparable接口,重写equals方法与hashCode方

TreeSet集合的add()方法源码解析(01.Integer自然排序)

>TreeSet集合使用实例 >TreeSet集合的红黑树 存储与取出(图) >TreeSet的add()方法源码     TreeSet集合使用实例 package cn.itcast_05; import java.util.TreeSet; /* * TreeSet:能够对元素按照某种规则进行排序. * 排序有两种方式 * A:自然排序 * B:比较器排序 * * TreeSet集合的特点:排序和唯一 * * 通过观察TreeSet的add()方法,我们知道最终要看TreeMap的

TreeSet的自然排序(自定义对象 compareTo方法)

>要实现自然排序,对象集合必须实现Comparable接口,并重写compareTo()方法 >一般需求中描述的是"主要条件",如:按姓名长度排序.  需注意次要条件 如:长度相同时,姓名内容,年龄等条件是否相等,这决定着是否存入TreeSet集合.   package cn.itcast.day21.treeset; /* * 要实现自然排序,就一定要实现Comparable接口,并重写compareTo()方法 * * 若不实现Comparable接口,而把对象往Tre

最简单的List集合排序方法

将数组按照一定的规则排序最简单的方法就是借助Arrays类的sort方法,那么要实现List集合排序的排序最简单的方式又是什么呢?当然是借助Collections类的sort方法,下面以一个例子来说明如何使用该方法实现List集合的排序: 代码一: package com.ghj.packageofvo; public class User { private String name; //姓名 private String birthday;//出生日期 public User(String