java list sort(java list 排序)

:暂无数据 2026-08-28 12:10:02 :0

java list sort(java list 排序)

大家好,如果您还对java list sort不太了解,没有关系,今天就由本站为大家分享java list sort的知识,包括java list 排序的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

java list 排序

import java.util.ArrayList;
import java.util.List;

public class App {

public static void main(String args) {

List《Integer》 list = new ArrayList《》();
list.add(85);
list.add(35);
list.add(20);
list.add(60);
list.add(54);

list.sort((x, y) -》 Integer.compare(x, y));

list.forEach(System.out::println);
}
}

java 怎么将List里面数据排序

学生实体类,包含姓名和年龄属性,

比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。

第一种:实体类自己实现比较

(实现comparable接口:public interface Comparable《T》 ,里面就一个方法声明:public int compareTo(T o); )

然后利用List类的sort(Comparator《? super E》 c)方法或java.util.Collections工具类的sort(List《T》 list) (其实里面就一句:list.sort(null); )进行排序:

结果:

第二种:借助比较器进行排序。

示例代码:

比较器java.util.Comparator类是一个接口(public interface Comparator《T》 ),包含int compare(T o1, T o2);等方法:

我们的比较器要实现该接口并实现compare方法:

比较的时候可以利用List的sort(Comparator《? super E》 c)方法(或者java.util.Collections工具类的sort(List《T》 list, Comparator《? super T》 c)方法)进行排序。

结果跟第一种方法一样:

Java List提供的默认排序方法sort()用的是什么排序策略

你好,很高兴回答你的问题。
List只是个接口,sort方法具体是怎么排序的是在具体的实现类中的。
不同的实现类排序实现是不一样的。有的同一个实现类在java的不同版本中排序的实现也可能是有差别的。
如果有帮助到你,请点击采纳。

java arraylist 的sort怎么用

在排序中,最重要的是自己实现自己的比较的行数,即是implements Comparator
实现方法 public int compare(Object o1, Object o2) 最为重要..

举个例子:
package book.arrayset;

import java.util.Comparator;

/**
* 整数比较器,将整数按降序排列
*/
class MyIntComparator implements Comparator{

/**
* o1比o2大,返回-1;o1比o2小,返回1。
*/
public int compare(Object o1, Object o2) {
int i1 = ((Integer)o1).intValue();
int i2 = ((Integer)o2).intValue();
if (i1 《 i2){
return 1;
}
if (i1 》 i2){
return -1;
}
return 0;
}
}

//上面的为比较的函数实现,下面真正的添加数据,

//通过调用上面的比较函数实现自定义排序的功能

package book.arrayset;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* 对List中的元素排序
*/
public class SortList {

public static void output(List list){
if (list == null){
return;
}
for (int i=0; i《list.size(); i++){
System.out.print(list.get(i).toString() + “ “);
}
System.out.println();
}

public static void main(String args) {
List list = new ArrayList();
list.add(new Integer(5));
list.add(new Integer(8));
list.add(new Integer(1));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Double(3.1));
System.out.println(“list开始状态“);
SortList.output(list);
//Collections.sort方法将用默认比较器排列list的元素
Collections.sort(list);
System.out.println(“list被默认比较器排序后的状态“);
SortList.output(list);
//下面将list的元素按降序排列
Collections.sort(list, new MyIntComparator());
System.out.println(“list被自定义比较器排序后的状态“);
SortList.output(list);

//因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,
//需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。
//然后采用Collections.sort(list, comparator);方法对容器进行排序。
}
}

JAVA中list排序问题

分不多,不过正好我研究了这里,也算给自己做个总结:

我为了方便解释、写了一个测试类

/** test for reflex */
public class Model {
private String name;
private String content;

public Model(){
this.name = “my name“;
this.content = “a long text“;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getContent() {
return content;
}
//测试
public void test() throws Exception{
Model model = new Model();
Method m1 = model.getClass().getMethod(“getName“, null);
System.out.println(m1.invoke(model, null));
}
public static void main(String args){
try {
new Model().test(“getName“);
} catch (Exception e) {
e.printStackTrace();
}
}
}
首先调用test,传递一个method过去;

通过反射机制(这里用到了getMethod、invoke,我比较喜欢getField)、获取到m1对象的getName方法,getMethod第一个参数为方法名、第二个是给这个method的参数的类型,
If parameterTypes is null, it is treated as if it were an empty array,如果为null,表示没有参数;(即 getName()方法);

然后在通过 invoke 注入参数;第一个是相应对象的引用、第二个是参数值(刚刚的是类型,现在才是值);
If the underlying method is static, then the specified obj argument is ignored. It may be null,也就是说static的方法第一个参数是null;
我们要调用的是getName(),那么就是 m1.invoke(model,null)了;

执行结果为:my name ;相当于调用了getName()方法.
绕了一圈也就是 model.getName() == model.getClass().getMethod(“getName“,null).invoke(model,null);

对于有参数的,调整为
public void test(String method) throws Exception{
Model model = new Model();
Method m1 = model.getClass().getMethod(method, String.class);
m1.invoke(model, “can you“);
System.out.println(model.getName());
}
结果:can you

接下来上边的题目就简单了,
public void Sort(List《E》 list, final String method, final String sort){
这里给出了method,接下来是一个内部类的处理;自定义一个comparator,

Method m1 = ((E) a).getClass().getMethod(method, null);
这里就是获取method方法,他没有参数。

m1.invoke(((E)a), null).toString()
这里是得到对象a调用方法method之后的返回值。

ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
而这里就是比较两个对象method方法的返回值

将ret交给sort进行排序;

就像3楼说的、真正排序的是sort方法,下面的只是对一个类中某个方法的返回值进行比较

Java的List怎么排序啊

用Collections.sort就可以排序,
里面的排序是默认的按自然顺序排列
也就是1,2,3,4这种
参数要求实现了Comparable的数据才能排序,
如果你自己写的类,你就要实现Comparable接口,然后在接口里面自动生成的方法里面
指定排序方法,一般的String Inteneger类都是实现了这个接口的 不用自己操作的。
你可以取看源代码

Java里面List排序

摘自:http://www.blogjava.net/zygcs/archive/2008/01/17/176032.html

//一个POJO例子

class User {
String name;
String age;

public User(String name,String age){
this.name=name;
this.age=age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

//具体的比较类,实现Comparator接口

import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class ComparatorUser implements Comparator{
public int compare(Object arg0, Object arg1) {
User user0=(User)arg0;
User user1=(User)arg1;

//首先比较年龄,如果年龄相同,则比较名字

int flag=user0.getAge().compareTo(user1.getAge());
if(flag==0){
return user0.getName().compareTo(user1.getName());
}else{
return flag;
}
}

}

//测试类
public class SortTest {

public static void main(String args){
List userlist=new ArrayList();
userlist.add(new User(“dd“,“4“));
userlist.add(new User(“aa“,“1“));
userlist.add(new User(“ee“,“5“));
userlist.add(new User(“bb“,“2“));
userlist.add(new User(“ff“,“5“));
userlist.add(new User(“cc“,“3“));
userlist.add(new User(“gg“,“6“));

ComparatorUser comparator=new ComparatorUser();
Collections.sort(userlist, comparator);

for (int i=0;i《userlist.size();i++){
User user_temp=(User)userlist.get(i);
System.out.println(user_temp.getAge()+“,“+user_temp.getName());
}

}
}

//首先年龄排序,如果年龄相同,则按名字排序

结果:
1, aa
2, bb
3, cc
4, dd
5, ee //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
5, ff
6, gg

如果你还想了解更多这方面的信息,记得收藏关注本站。

java list sort(java list 排序)

本文编辑:admin

更多文章:


协方差计算公式(协方差的计算公式)

协方差计算公式(协方差的计算公式)

这篇文章给大家聊聊关于协方差计算公式,以及协方差的计算公式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 08:10

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

本篇文章给大家谈谈易语言网页api接口怎么调用,以及易语言,怎么读取网页json的api对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 08:00

majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

最近更新

majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
热门文章

标签列表