关于List集合中元素排序问题

问题描述:

有一个list集合,其中元素是Student对象,根据student的age排序。

Student对象

/**
 * description
 *
 * @author 70KG
 * @date 2018/9/29
 */
@Data
public class Student implements Comparable<Student> {

    private String name;

    private Integer age;

    private Integer num;

    public Student() {
    }

    public Student(String name, Integer age, Integer num) {
        this.name = name;
        this.age = age;
        this.num = num;
    }

    @Override
    public int compareTo(Student student) {
        return student.getAge().compareTo(this.getAge());
    }
}

此类需要实现Comparable接口,重写compareTo方法

测试类:

/**
 * description
 *
 * @author 70KG
 * @date 2018/9/29
 */
public class TestController {

    public static void main(String[] args) {

        List<Student> list = new ArrayList<>();

        Student student1 = new Student("张三",21,1);
        Student student2 = new Student("李四",22,2);
        Student student3 = new Student("王五",23,3);
        Student student4 = new Student("赵六",24,4);

        list.add(student4);
        list.add(student1);
        list.add(student2);
        list.add(student3);

        System.out.println(list);

        Collections.sort(list);

        System.out.println(list);
    }

}

利用Collections.sort()方法进行重排序。

输出结果:

[Student(name=赵六, age=24, num=4), Student(name=张三, age=21, num=1), Student(name=李四, age=22, num=2), Student(name=王五, age=23, num=3)]
[Student(name=赵六, age=24, num=4), Student(name=王五, age=23, num=3), Student(name=李四, age=22, num=2), Student(name=张三, age=21, num=1)]

正序倒序,只需改变实体中的compareTo方法即可。

原文地址:https://www.cnblogs.com/zhangjianbing/p/9722210.html

时间: 2024-07-31 19:32:04

关于List集合中元素排序问题的相关文章

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译. foreach (int x in myArray) { x++; //错误代码,因为改变了元素的值 Console.WriteLine(x); } 如果要让自定义的数据类型支持foreach循环,则该类型必须实现IEnumerable<T>接口,且存在对应此列表的IEnumerator<T>实现. 实际上,在.Net的底层(IL语言层面)而言, foreach (var

java按照集合中元素的属性进行排序示例代码

public class Student { private String name; private int age; private int id; public Student() {  super(); } public Student(String name, int age, int id) {  super();  this.name = name;  this.age = age;  this.id = id; } public String getName() {  retur

关于集合中元素的有序无序的易混淆点

最近在整理Java基础知识的面试题,看到了一个题目的答案不够准确,这里跟大家分享一下. 一.面试题的小错误 对于TreeSet和TreeMap来说,元素应该是无序(指元素的存取)而不是有序的,而在表中它可能想表达的是可以排序,不够严谨,严格来讲 元素的有序≠可以排序.元素的存取有序和排序本质上应该是两码事,不应该混为一听. 二.元素的有序和无序 下面具体来讲讲,集合中元素的存取有序的问题. 众所周知,List的特点:    ①元素可重复 ②元素是有序的 相对地,Set的特点是:    ①元素唯一

java中循环遍历删除List和Set集合中元素的方法

今天一个网友问我集合忘记了没有,这一问让我纠结了一下,最后决定把这个集合问题写下来,以免自己在犯下类似的问题: 需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常:ConcurrentModificationException为了以后不会忘记,和也给遇到同样问题的同事提供一个参考: 出现错误的代码如下所示: package set; import java.util.HashSet; import java.util.Iterator; import java.u

集合中的类型转化 以及求集合中元素的最大值,平均值

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace 集合的小练习 { class Program { static void Main(string[] args) { //创建一个集合,里面添加一些数字,求平均值以及和,最大值. ArrayLis

More is better(hdu 1856 计算并查集集合中元素个数最多的集合)

More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others)Total Submission(s): 21167    Accepted Submission(s): 7720 Problem Description Mr Wang wants some boys to help him with a project. Because the project

Java List集合中元素比较大小

list排序方法一Comparator形式: 1.比较数字 List<Shoes> all_shoes = new ArrayList<Shoes>(); Collections.sort(all_shoes, new Comparator<Shoes>(){ @Override /* * * int compare(String o1, String o2) 返回一个基本类型的整型 * 返回-1表示:shoes1.getSimilarity()大于等于shoes2.g

python中len 小练习:获取并输出集合中的索引及对应元素

len()用来获取长度.字节等数值 1 a = ["hello", "world", "dlrb"] 2 b = len(a) 3 for c in range(0, b): 4 print(c, a[c]) 输出结果: 0 hello 1 world 2 dlrb 我们定义了集合a,通过len获取到集合中元素的个数赋值给变量b,在for循环中通过遍历从0到变量b区间得到所有的索引给变量c a[c]通过索引找到对应元素,最后print输出索引和对

用Scala实现集合中相邻元素间的差值

欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a,b,c,d)中(b-a,c-b,d-c) 解法 val l1 = 1 to 10 toList val l2 = l1.tail l1.zip(l2).map(p=>(p._2 - p._1) 上述代码即可求出两两差值.代码含义稍作解释: tail表示一个集合中除首元素外的剩余元素,也是一个集合.