java 类似结构体_Java中如何实现类似C++结构体的二级排序
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++结构体的二级排序相关推荐
- java堆 数据结构 堆_Java中的紧凑堆外结构/组合
java堆 数据结构 堆 在上一篇文章中,我详细介绍了代码对主内存的访问方式的含义. 从那时起,我就在Java中可以做什么以实现更可预测的内存布局提出了很多疑问. 有些模式可以使用数组支持的结构来应用 ...
- Java三层结构的概念_Java中的mvc和三层结构究竟是什么关系
原标题:Java中的mvc和三层结构究竟是什么关系 一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手 ...
- 组合模式java怎么获取钥匙_java中组合模式详解和使用方法
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...
- java 二进制 文件比较_Java中对文件的读写操作之比较
Java 中对文件的读写操作之比较 作者:Jeru Liu 日期:November 29,2000 版本:1.0 纪念在chinaasp积分过一百呕心原创一篇(Java 中对文件的读写操作之比较)拿分 ...
- java读取文件 路径_Java中的获取文件的物理绝对路径,和读取文件
获取文件的绝对路径,读取该文件 一.文件目录打印图 下面的文件目录图,是项目中文件的位置信息:下面的例子是按照这个图来演示的. . |-- java | |-- ibard | | |-- demo1 ...
- java多线程 线程安全_Java中的线程安全
java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...
- java 获取当前年_java中的反射(三) - kelexin
目录一.反射1.class类2.访问字段3.调用方法4.调用构造方法5.获取继承对象6.动态代理二.sping中的反射 本篇转自:本篇内容spring中的反射 java中的反射(一): java中的反 ...
- java可以多重继承吗_Java中的多重继承与组合vs继承
java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...
- java中有没有栈_Java中堆和栈有什么区别
stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...
最新文章
- [leetcode]203. Remove Linked List Elements链表中删除节点
- docker 出现 Error response from daemon
- 嵌入式linux内核开启键盘,- 基于嵌入式Linux内核的特殊矩阵键盘设计完整驱动控制模块方案...
- ES10新特性_Symbol.prototype.description---JavaScript_ECMAScript_ES6-ES11新特性工作笔记060
- python 文件及文件夹操作
- 无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll 上 问题解决方法
- oracle rac 启动失败has,oracle11.2.0.4 rac asm启动故障
- oracle chinese_china.al32utf8,Oracle11g字符集更改为AL32UTF8
- 系统集成Nacos和Feign
- python打开其他应用程序错误_Python应用程序错误(Udacity)
- 修改oracle用户密码永不过期的方法
- 机顶盒安装APK应用的方法
- ctfshow七夕杯2022
- 滚动(scroll)操作的应用
- canvas图形放大缩小鼠标拖拽
- Value cannot be null. (Parameter ‘connectionString‘)
- Ruby Jquery 地图,地理信息相关资源
- PHP+Mysql如何实现数据库增删改查
- Lypunov函数是什么?
- Windows TerminateThread终止线程过程(从3环到0环)
热门文章
- php柱状图html代码,html5生成柱状图(条形图)效果的实例代码
- 在java中关于枚举类型的特性_java枚举类型小结
- 计算机网络入门指南之计算机网络体系结构
- egret键盘事件监听
- 【腾讯Bugly干货分享】那些年,我们一起写过的“单例模式”
- WinMerge软件的使用
- WSS 3.0中An unexpected error has occurred的一个解决方案
- windows消息机制-4(MFC)
- C#使用Win32API获得窗口和控件的句柄
- C#完美实现透明窗体的绘制效果