java集合按大小排序_List集合对象中按照不同属性大小排序的实例
实例如下:
package com.huad.luck;
import java.util.arraylist;
import java.util.collections;
import java.util.comparator;
import java.util.list;
public class test {
public static void main(string[] args) {
person p = new person();
p.setname("tom");
p.setage(11);
person p1 = new person();
p1.setname("lilei");
p1.setage(19);
person p2 = new person();
p2.setname("json");
p2.setage(15);
list list =new arraylist();
list.add(p);
list.add(p1);
list.add(p2);
collections.sort(list,new comparator() {
//这里可以再person中实现 comparator接口,重写compare方法
@override
public int compare(person o1, person o2) {
//这里按照名字排序
return o1.getname().compareto(o2.getname());
//这里按照age排序
//return (o1.getage()+"").compareto(o2.getage()+"");
//。。。根据不同属性值排序
}
});
for (int i = 0; i < list.size(); i++) {
system.out.println(list.get(i).getname());
}
}
}
//person类
package com.huad.luck;
public class person{
private string name ;
private int age;
public person(string name , int age) {
this.name = name;
this.age = age;
}
public person( ) {
}
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;
}
}
用collection.sort()方法对list集合排序
第一种是list中的对象实现comparable接口,如下:
/**
* 根据order对user排序
*/
public class user implements comparable{
private string name;
private integer order;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
public integer getorder() {
return order;
}
public void setorder(integer order) {
this.order = order;
}
public int compareto(user arg0) {
return this.getorder().compareto(arg0.getorder());
}
}
测试一下:
public class test{
public static void main(string[] args) {
user user1 = new user();
user1.setname("a");
user1.setorder(1);
user user2 = new user();
user2.setname("b");
user2.setorder(2);
list list = new arraylist();
//此处add user2再add user1
list.add(user2);
list.add(user1);
collections.sort(list);
for(user u : list){
system.out.println(u.getname());
}
}
}
输出结果如下
a
b
第二种方法是根据collections.sort重载方法来实现,例如:
/**
* 根据order对user排序
*/
public class user { //此处无需实现comparable接口
private string name;
private integer order;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
public integer getorder() {
return order;
}
public void setorder(integer order) {
this.order = order;
}
}
主类中这样写即可:
public class test{
public static void main(string[] args) {
user user1 = new user();
user1.setname("a");
user1.setorder(1);
user user2 = new user();
user2.setname("b");
user2.setorder(2);
list list = new arraylist();
list.add(user2);
list.add(user1);
collections.sort(list,new comparator(){
public int compare(user arg0, user arg1) {
return arg0.getorder().compareto(arg1.getorder());
}
});
for(user u : list){
system.out.println(u.getname());
}
}
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
多字段的场合:
collections.sort(list,new comparator(){
public int compare(user arg0, user arg1) {
// 第一次比较专业
int i = arg0.getorder().compareto(arg1.getorder());
// 如果专业相同则进行第二次比较
if(i==0){
// 第二次比较
int j=arg0.getxxx().compareto(arg1.getxxx());
// 如果学制相同则返回按年龄排序
if(j==0){
return arg0.getccc().compareto(arg1.getccc());
}
return j;
}
return i;
}
});
以下是另外一个例子
package test;
import java.util.arraylist;
import java.util.collections;
import java.util.comparator;
public class arraylisttest {
public static void main(string[] args) {
arraylist arraylist = new arraylist() ;
arraylist.add(new exmployee("zengqiang",new integer(5000))) ;
arraylist.add(new exmployee("zengmin",new integer(4000))) ;
arraylist.add(new exmployee("liuxiaojuan",new integer(4200))) ;
arraylist.add(new exmployee("giuming",new integer(2200))) ;
collections.sort(arraylist, new comparator(){
public int compare(exmployee arg0, exmployee arg1) {
return arg1.getsalary()-arg0.getsalary() ; //按照工资升序
//return arg0.getsalary()-arg1.getsalary() ; 按照工资降序
//return arg0.getname().compareto(arg1.getname()) ; 按照姓名升序
}
});
for(exmployee e:arraylist)
system.out.println(e.getname()+"'s salary is "+e.getsalary()) ;
}
}
class exmployee {
public exmployee(string name, int salary) {
this.name = name ;
this.salary = salary ;
}
private string name;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
public int getsalary() {
return salary;
}
public void setsalary(int salary) {
this.salary = salary;
}
private int salary;
}
以上这篇list集合对象中按照不同属性大小排序的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。
希望与广大网友互动??
点此进行留言吧!
java集合按大小排序_List集合对象中按照不同属性大小排序的实例相关推荐
- List根据对象中的指定元素进行排序
List根据对象中的指定元素进行排序 背景: 在实际开发中,产品对数据会有个各种要求,排序应该最常见,也是比较麻烦的一件事情,很多时候数据不是一条SQL查询出来的,我们将其封装在List中,那么问题来 ...
- 递归实现对多层嵌套的对象数组依照某属性进行排序
<script>//开发中如果需要对多层嵌套的对象数组依照某个属性进行排序,可以使用递归的方法实现//比如需要对数组里面每一层的importSum属性值进行排序const arr = [{ ...
- 按照js对象中的某个值进行排序
sort顺序排序 var arr=[9,8,6,5,3,1,2,7,4] arr.sort() //返回值 [1, 2, 3, 4, 5, 6, 7, 8, 9] 降序排列 var arr=[9,8, ...
- pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序
pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录
- python 按从小到大的顺序组合成一个字典_Python实现字典排序、按照list中字典的某个key排序的方法示例...
本文实例讲述了python实现字典排序.按照list中字典的某个key排序的方法.分享给大家供大家参考,具体如下: 1.给字典按照value按照从大到小排序 排序 dict = {'a':21, 'b ...
- js 对象中添加新属性
js 对象中添加新属性 对象数组添加新属性 同名属性会被覆盖,相同属性会去重
- js删除数组对象中的某个属性的方法
模拟数组对象数据 let newArr = [{title:'小明', id:18},{title:'小红', id:16}] 方式一:(for循环)删除数组对象中的某个属性,如删除id属性 for ...
- 【关于js数组对象一道题】将数组对象中的英文属性名替换为中文属性名
将数组对象中的英文属性名替换为中文属性名 const arr = [{name: '张三', age: 18, address: '湖北'}, {name: '李四', age: 18, addres ...
- DOM对象中的常用属性(innerHTML属性,innerText属性,className属性,style属性)
DOM对象中的常用属性 innerHTML属性 innerText属性 className属性 style属性 innerHTML属性 innerHTML属性:用于设置或获取HTML 元素中的内容. ...
最新文章
- android+高仿视频录制,android高仿微信视频编辑页
- goland http proxy 代理设置
- 40种为网页设计师准备的高品质和免费的多媒体PSD文件
- 【入门】WebRTC知识点概览 | 内有技术干货免费下载
- 深度学习和目标检测系列教程 2-300:小试牛刀,使用 ImageAI 进行对象检测
- js预览本地word文档_Github+docsify打造在线文档
- Spring Security原理分析
- 手机麦克风结构原理图_麦克风阵列的基本原理、结构组成及声学效果简介
- HTTP报文-请求报文和响应报文
- 情迁机器人Tim_情迁机器人插件-情迁机器人app下载V1.5.0安卓版-西西软件下载
- echarts饼状图设置位置
- UNIX再学习 -- RS485 串口编程
- 关于IDEA下载安装,jpcap与wincap的一些使用方法
- GEF活性检测试剂盒的主要用途和应用
- 接入层交换机和汇聚层交换机的选择及连接方案
- OSPF(第六天笔记)
- Echarts--市地图
- iOS12 Siri ShortCuts 应用 (二)
- RFC768:用户数据报协议(UDP)
- SDN在云数据中心的应用——架构篇
热门文章
- pycharm 修改默认的注释风格(reStructuredText风格、Google风格、Numpy风格)
- 创建构建方法android,如何快速创建并发布一个 Android 库
- 如何才能轻松地分析日志?
- 反射生成 INSERT 多个对象的 SQL 语句(批量插入)
- ubuntu 虚拟机上的 django 服务,在外部Windows系统上无法访问
- Windows下配置Redis,并修改密码
- 清北考前刷题day6下午好
- [转]基于Storm的实时数据处理方案
- 【leetcode】Max Points on a Line(hard)☆
- Verdi(debussy)中查看memory