一个List,里面有多个对象,每个对象两个属性A,B ,都是String类型,怎么让这个List

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个List,里面有多个对象,每个对象两个属性A,B ,都是String类型,怎么让这个List相关的知识,希望对你有一定的参考价值。

怎么让这个List中的对象以属性A为主排序,然后保证A属性排序结果再以B属性排序。
在线等,急

现给你编的,我也是个初学者,所以可能代码有点多,理论上应该用不了那么多代码吧……
但是功能实现了,你可以试试
public static void main(String[] args)
// TODO Auto-generated method stub
List<Entity> list = new ArrayList<Entity>();
Entity a=new Entity("a","b");
Entity b=new Entity("b","c");
Entity c=new Entity("b","b");
list.add(b);
list.add(a);
list.add(c);//给List赋值

for(int i=0;i<list.size();i++)//先进行第一轮判断,也就是针对第一个String
if(i<list.size()-1)
if(list.get(i+1).a.compareTo(list.get(i).a)<0)//字符串a比较,如果前一个大于后一个,则交换位置
Entity d = list.get(i);
list.set(i, list.get(i+1));
list.set(i+1, d);


else if(i==list.size())//同上一个,考虑到数组下标越界所以区分了下
if(list.get(i-1).a.compareTo(list.get(i).a)<0)
Entity d = list.get(i-1);
list.set(i-1, list.get(i));
list.set(i, d);



for(int i=0;i<list.size();i++)//进行第二轮判断,针对b进行判断
if(i<list.size()-1)
if(list.get(i+1).a.compareTo(list.get(i).a)==0)//因为a已经拍好序了,所以只针对a相同的情况对b排序
if(list.get(i+1).b.compareTo(list.get(i).b)<0)
Entity d = list.get(i);
list.set(i, list.get(i+1));
list.set(i+1, d);


else if(i==list.size())
if(list.get(i+1).a.compareTo(list.get(i).a)==0)
if(list.get(i-1).b.compareTo(list.get(i).b)<0)
Entity d = list.get(i-1);
list.set(i-1, list.get(i));
list.set(i, d);




//打印输出list
for(int i=0;i<list.size();i++)
System.out.println(list.get(i).a+" "+list.get(i).b);

参考技术A 用Linq

lst = lst.OrderBy(p=>p.属性A).ThenOrderBy(p=>p.属性B).ToList();

以上是关于一个List,里面有多个对象,每个对象两个属性A,B ,都是String类型,怎么让这个List的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 把两个不同实体如何放在一个集合里面

如何在前端输入多个同一对象的各个值,将这个对象的集合传入到java后台中

对封装的再次理解

java List对象排序的问题……

java lsit集合数据替换问题

java 将两个相同对象不同属性list合并?