一个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的主要内容,如果未能解决你的问题,请参考以下文章