按列表值排序列表<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类吗?
你必须使用两个概念:
-
Collections.sort
实用程序。 -
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>();
将按任何嵌套列表的第一个索引排序。
有关此概念的更多信息,请参阅:
用三个字段上课; 不要将它们作为List
,这只是愚蠢的。 使该类具有可比性将允许您根据自己的喜好对其进行排序。
Java 8版本:
Collections.sort(fieldValues, Comparator.comparing(e -> e.get(0)));
此版本将整数排序为数字,而不是字符串:
Collections.sort(fieldValues, Comparator.comparing(e -> Integer.valueOf(e.get(0))));