Java中的Collection.sort()方法能使用泛型对对象的变量进行排序,下面是两种方法。

文件名:student.java

import java.util.*;

import com.sun.org.apache.xerces.internal.dom.ProcessingInstructionImpl;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections; public class Student implements Comparable<Student>{ private int id;
private String name; public Student(String setname,int id) {
this.id=id;
this.name=setname;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public int compareTo(Student stu) {
/* 重写compareTo方法1 Compare排序接口
* id升序排序
if(this.id>stu.id) {
return 1;
}
else if (this.id<stu.id) {
return -1;
}
else {
return 0;
}
或者return this.getId-stu.getId;
*/ //名字升序排序
return this.getName().compareTo(stu.getName());
} }

  这个文件主要是定义一个学生类,如果使用Compare排序接口算法,就要在实体类中重写compare方法,能实现对name和id进行升序和降序排序。

文件名:drive.java

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; public class drive {
public static void main(String[] args){
ArrayList<Student> studentlist=new ArrayList<Student>();
Student stu1 = new Student("zhangsan",12);
Student stu2 = new Student("lisi",4);
Student stu3 = new Student("wangwu", 5);
studentlist.add(stu1);
studentlist.add(stu2);
studentlist.add(stu3);
Collections.sort(studentlist);
System.out.println(studentlist.get(0).getName());
System.out.println(studentlist.get(1).getName());
System.out.println(studentlist.get(2).getName()); //方法2,compare比较器接口
ArrayList<Student> studentlist2=new ArrayList<Student>();
Student stu4=new Student("Tom", 13);
Student stu5=new Student("Susan", 4);
Student stu6=new Student("Puse", 41);
studentlist2.add(stu4);
studentlist2.add(stu5);
studentlist2.add(stu6);
Collections.sort(studentlist2, new Comparator<Student>() {
public int compare(Student a,Student b) {
//return a.getId()-b.getId();升序排序
//降序排序
return b.getId()-a.getId();
}
});
System.out.println(studentlist2.get(0).getId());
System.out.println(studentlist2.get(1).getId());
System.out.println(studentlist2.get(2).getId()); }
}

  这里使用了方法2的compare比较器接口,可以在main函数中进行排序,运行结果如下

  如图,实现了排序

Java的Collection.sort()方法的更多相关文章

  1. java中Collections.sort()方法实现集合排序

    1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定 ...

  2. 关于Java中Arrays.sort()方法TLE

    最近一直在练用Java写题,今天无意发现一道很简单的二分题(链接),我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速 ...

  3. Java集合Collection基本方法

    jdk1.7 api中的方法摘要: 参考java集合大全图:https://www.cnblogs.com/xkzhangsanx/p/10889114.html Collection为List.Se ...

  4. JAVA通过使用sort方法排序

    java 代码: 对集合排序: //升序public void listSort1(){ List<Integer> list = new ArrayList<Integer> ...

  5. Java的Arrays.sort()方法到底用的什么排序算法

    暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序...其实不全对.让我们分析个究竟: 1 // Use Q ...

  6. Java学习笔记27(集合框架一:ArrayList回顾、Collection接口方法)

    集合:集合是java中提供的一种容器,可以用来存储多个数据 集合和数组的区别: 1.数组的长度是固定的,集合的长度是可变的 2.集合中存储的元素必须是引用类型数据 对ArrayList集合的回顾 示例 ...

  7. java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)

    集合:集合是Java提供的一种容器,可以用来存储多个数据: 集合与数组的区别:集合的长度是可变的,数组的长度是固定的 集合中存储的数据必须是引用类型数据: ArrayList回顾: public cl ...

  8. java中的排序(自定义数据排序)--使用Collections的sort方法

    排序:将一组数据按相应的规则 排列 顺序 1.规则:       基本数据类型:日常的大小排序. 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可.---- ...

  9. Java Collection集合方法

    一.简单方法 package cn.itcast.day15; import java.util.ArrayList; import java.util.Arrays; import java.uti ...

随机推荐

  1. docker 搭建Mysql集群

    docker基本指令: 更新软件包 yum -y update 安装Docker虚拟机(centos 7) yum install -y docker 运行.重启.关闭Docker虚拟机 servic ...

  2. 730. Count Different Palindromic Subsequences

    Given a string S, find the number of different non-empty palindromic subsequences in S, and return t ...

  3. Python os.path.join() 进行路径拼接

    在python 项目开发过程中,经常需要将获取到的路径进行拼接, # os.path.join(path1,path2) 将两个路径拼接起来 os.path.join("/usr" ...

  4. python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  5. linux文件系统底层原理

    Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 底层原理图: 在讲解各个 ...

  6. 剑指offer六十之按之把二叉树打印成多行

    一.题目 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.二.思路 队列LinkedList完成层序遍历,用end记录每层结点数目 三.代码 import java.util.Arra ...

  7. python处理自然语言:1、调用LTP的API,2、使用pyltp

    最近在学习处理自然语言处理,就发现LTP的(哈工大语言云),这个比我最先使用的jieba分词更好,词库更大,功能也更强大. 这里介绍两种方法:1.调用LTP的API,2.使用pyltp,这里的方法基于 ...

  8. asp.net四中绑定方式

    ASP.NET Eval四种绑定方式: 1.1.x中的数据绑定语法 <asp:Literal id="litEval2" runat="server" T ...

  9. sql日期格式处理

    sql server中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 ...

  10. asp.net页面传值方法汇总

    1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据 ...