java 怎么将List里面数据排序?

java 怎么将List里面数据排序?,第1张

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

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

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

(实现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)方法)进行排序。

结果跟第一种方法一样:

public class test {

public static void main(String[] args) {

String str="1.0 34908.88823466623 24.8 2.0 39630.961058839486 20.0 3.0 29856.65765600835 25.9 4.0 38859.980988644864 25.3 5.0 47423.10173210188 23.8 6.0 19849.168161290105 20.8 7.0 29328.50106736126 18.9 8.0 29654.31232056705 19.4 9.0 21008.940395882488 16.8 1.0 34926.3790840164 24.8 2.0 39660.28500738808 20.0 3.0 29851.443257036703 25.9 4.0 38868.554962563765 25.3 5.0 47445.38630797819 23.8 6.0 19879.09643860034 20.8 7.0 29348.43050519415 18.9 8.0 29680.180199684346 19.4 9.0 20980.839899721435 16.8"

str=str.replaceAll("\\s+", " ")//把多个空格合并成一个空格

String[] org=str.split(" ")//按照空格进行分割

double[][] dou=new double[org.length/3][3]//将一维数组分到三维数组里边

for(int i=0i<org.lengthi++){

dou[(i-i%3)/3][i%3]=Double.valueOf(org[i])

}

double midd = 0//冒泡排序法根据第二列对二维数组前9行进行排序

for (int i=0i<9i++){

for(int j=0j<9-i-1j++){

if(dou[j][1]>dou[j+1][1]){//判断第二列是否比前一个大,如果是则调换位置

for(int k=0k<3k++){

midd=dou[j+1][k]

dou[j+1][k]=dou[j][k]

dou[j][k]=midd

}

}

}

}

for(int i=0i<dou.lengthi++){//打印输出数值

for(int j=0j<dou[i].lengthj++)

System.out.print(dou[i][j]+" ")

System.out.println()

}

}

}

好了,给你写好了,记得采纳加分,亲!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6730651.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存