1:实现Comparable接口

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

class User implements Comparable{

private Integer id;

private String name;

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(User o) {

if (this.id == o.id) return this.name.compareTo(o.name); //id相同按name排序

else return this.id.compareTo(o.id); //按ID从小到大排序

}

}

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

String s1 = "abx";

String s2 = "小1";

System.out.println(s1.compareTo(s2));

List users = new ArrayList();

User u6 = new User();

u6.setId(6); u6.setName("Jack");

User u = new User();

u.setId(6); u.setName("abx");

User u1 = new User();

u1.setId(1); u1.setName("小1");

User u4 = new User();

u4.setId(4); u4.setName("小4");

User u2 = new User();

u2.setId(2); u2.setName("小2");

User u7 = new User();

u7.setId(6); u7.setName("abc");

users.add(u2);

users.add(u6);

users.add(u4);

users.add(u1);

users.add(u);

users.add(u7);

Collections.sort(users);

for (User ui : users) {

System.out.println(ui.getId() + " " + ui.getName());

}

}

}

2:集合外定义Comparator

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

class User{

private int id;

private String name;

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;

}

}

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

String s1 = "abx";

String s2 = "小1";

System.out.println(s1.compareTo(s2));

List users = new ArrayList();

User u6 = new User();

u6.setId(6); u6.setName("Jack");

User u = new User();

u.setId(6); u.setName("abx");

User u1 = new User();

u1.setId(1); u1.setName("小1");

User u4 = new User();

u4.setId(4); u4.setName("小4");

User u2 = new User();

u2.setId(2); u2.setName("小2");

User u7 = new User();

u7.setId(6); u7.setName("abc");

users.add(u2);

users.add(u6);

users.add(u4);

users.add(u1);

users.add(u);

users.add(u7);

Collections.sort(users, new Comparator() {

@Override

public int compare(User o1, User o2) {

if (o1.getId() == o2.getId()) return o1.getName().compareTo(o2.getName());

return o1.getId() > o2.getId() ? 1 : -1;

}

});

for (User ui : users) {

System.out.println(ui.getId() + " " + ui.getName());

}

}

}

java 类似结构体_Java中如何实现类似C++结构体的二级排序相关推荐

  1. java堆 数据结构 堆_Java中的紧凑堆外结构/组合

    java堆 数据结构 堆 在上一篇文章中,我详细介绍了代码对主内存的访问方式的含义. 从那时起,我就在Java中可以做什么以实现更可预测的内存布局提出了很多疑问. 有些模式可以使用数组支持的结构来应用 ...

  2. Java三层结构的概念_Java中的mvc和三层结构究竟是什么关系

    原标题:Java中的mvc和三层结构究竟是什么关系 一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手 ...

  3. 组合模式java怎么获取钥匙_java中组合模式详解和使用方法

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...

  4. java 二进制 文件比较_Java中对文件的读写操作之比较

    Java 中对文件的读写操作之比较 作者:Jeru Liu 日期:November 29,2000 版本:1.0 纪念在chinaasp积分过一百呕心原创一篇(Java 中对文件的读写操作之比较)拿分 ...

  5. java读取文件 路径_Java中的获取文件的物理绝对路径,和读取文件

    获取文件的绝对路径,读取该文件 一.文件目录打印图 下面的文件目录图,是项目中文件的位置信息:下面的例子是按照这个图来演示的. . |-- java | |-- ibard | | |-- demo1 ...

  6. java多线程 线程安全_Java中的线程安全

    java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...

  7. java 获取当前年_java中的反射(三) - kelexin

    目录一.反射1.class类2.访问字段3.调用方法4.调用构造方法5.获取继承对象6.动态代理二.sping中的反射 本篇转自:本篇内容spring中的反射 java中的反射(一): java中的反 ...

  8. java可以多重继承吗_Java中的多重继承与组合vs继承

    java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...

  9. java中有没有栈_Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...

最新文章

  1. [leetcode]203. Remove Linked List Elements链表中删除节点
  2. docker 出现 Error response from daemon
  3. 嵌入式linux内核开启键盘,- 基于嵌入式Linux内核的特殊矩阵键盘设计完整驱动控制模块方案...
  4. ES10新特性_Symbol.prototype.description---JavaScript_ECMAScript_ES6-ES11新特性工作笔记060
  5. python 文件及文件夹操作
  6. 无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll 上 问题解决方法
  7. oracle rac 启动失败has,oracle11.2.0.4 rac asm启动故障
  8. oracle chinese_china.al32utf8,Oracle11g字符集更改为AL32UTF8
  9. 系统集成Nacos和Feign
  10. python打开其他应用程序错误_Python应用程序错误(Udacity)
  11. 修改oracle用户密码永不过期的方法
  12. 机顶盒安装APK应用的方法
  13. ctfshow七夕杯2022
  14. 滚动(scroll)操作的应用
  15. canvas图形放大缩小鼠标拖拽
  16. Value cannot be null. (Parameter ‘connectionString‘)
  17. Ruby Jquery 地图,地理信息相关资源
  18. PHP+Mysql如何实现数据库增删改查
  19. Lypunov函数是什么?
  20. Windows TerminateThread终止线程过程(从3环到0环)

热门文章

  1. php柱状图html代码,html5生成柱状图(条形图)效果的实例代码
  2. 在java中关于枚举类型的特性_java枚举类型小结
  3. 计算机网络入门指南之计算机网络体系结构
  4. egret键盘事件监听
  5. 【腾讯Bugly干货分享】那些年,我们一起写过的“单例模式”
  6. WinMerge软件的使用
  7. WSS 3.0中An unexpected error has occurred的一个解决方案
  8. windows消息机制-4(MFC)
  9. C#使用Win32API获得窗口和控件的句柄
  10. C#完美实现透明窗体的绘制效果