java List<T>排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java List<T>排序相关的知识,希望对你有一定的参考价值。
Java List<T> 的一个排序问题. 我这儿有个这么个需求: // 这是一个List<T>集合, SpecialArticle 是一个实体Bean, List<SpecialArticle> sa = speArticleCache_id.get(specialId); SpecialArticle 实体中有一个sort 排序的字段,类型为Integer 。 // 也就是这个字段 sa.get(j).getSort(); 我要根据这个字段来排序。请问朋友们有什么比较简便,省内存的处理方案!
一、首先你的SpecialArticle类要实现 java.util.Comparator接口,在public int compare(Object o1, Object o2) 方法中对比两个SpecialArticle的sort属性的大小,第一个的大就返回1,第二个的大就返回-1,一样大就返回0;二、然后使用java.util.Arrays的sort方法来替List集合排序:java.util.Arrays.sort(sa);。 参考技术A 方案很多,大致原理都一样第一步,导出对象数组,以为你现在用的是List,所以存储结构不清楚,只能导出数组来排序第二步,用算法排序,这个地方方案就多了,可以实现Comparable,然后用Arrays.sort,或者自己用排序算法(快排、选择、冒泡、哈希等等)我给个基于选择排序的算法方案吧SpecialArticle [] sas = sa.toArray(new SpecialArticle[0]); //导出数组for(int i = 0; i < sas.length - 1; i ++)int m = i;for(int j = i + 1; j < sas.length; j ++)if(sas[m].getSort()<sas[j].getSort())m = j;if( m != i)
SpecialArticle tmp = sas[i];
sas[i]=sas[m];
sas[m]=tmp;
-------------------------------楼下的,应该是Comparable而非Comparator,再就是Arrays.sort只支持数组
JAVA list 根据对象的某个属性排序
//需要排序的list List<T> list= new ArrayList<>(); //开始排序 Collections.sort(list, new Comparator<T>(){ public int compare(T o1, T o2) { //排序属性 if(o1.getNum() < o2.getNum()){ return 1; } if(o1.getNum() == o2.getNum()){ return 0; } return -1; } }); //排序完成 输出 System.out.println(new Gson().toJson(list))
以上是关于java List<T>排序的主要内容,如果未能解决你的问题,请参考以下文章