按列表值排序列表<List >

我希望按列表中的值排序List,它包含三个值,第一个值是整数i将其转换为字符串,其他两个值本质上是字符串,我想按第一个字符串对列表进行排序。

List<List> detail_View = new ArrayList<List>(); List fieldValues =fieldValues = new ArrayList(); String aString = Integer.toString(ScreenId); fieldValues.add(aString); fieldValues.add(DisplayScreenName); fieldValues.add(TableDisplay); detail_View.add(fieldValues); 

在上面的代码中,我必须按ScreenId对列表值进行排序

假设您不想按字母顺序对整数(存储为String)进行排序,则不能使用默认比较器,但必须先将其转换回整数:

 Collections.sort(detail_view, new Comparator>(){ int compareTo(List a, List b){ return Integer.valueOf(a.get(0)).compareTo(Integer.valueOf(b.get(0)); } }); 

我可以建议不要为这三个数据使用List,而是使用自己的bean类吗?

你必须使用两个概念:

  1. Collections.sort实用程序。
  2. Comparator接口。

我写下你解决的问题如下:

首先你必须写你的比较器:

 class CustomComparator implements Comparator> { @Override public int compare(List o1, List o2) { String firstString_o1 = o1.get(0); String firstString_o2 = o2.get(0); return firstString_o1.compareTo(firstString_o2); } } 

然后你使用Collections实用程序如下:

 Collections.sort(detail_View, new CustomComparator()); 

在这些步骤之后,您的列表:

 List> detail_View = new ArrayList>(); 

将按任何嵌套列表的第一个索引排序。

有关此概念的更多信息,请参阅:

  1. http://www.javadeveloper.co.in/java-example/java-comparator-example.html
  2. http://www.roseindia.net/java/java-tips/data/collections_non_generic/comparators.shtml

用三个字段上课; 不要将它们作为List ,这只是愚蠢的。 使该类具有可比性将允许您根据自己的喜好对其进行排序。

Java 8版本:

 Collections.sort(fieldValues, Comparator.comparing(e -> e.get(0))); 

此版本将整数排序为数字,而不是字符串:

 Collections.sort(fieldValues, Comparator.comparing(e -> Integer.valueOf(e.get(0))));