我有一个分号分隔值的 ArrayList,需要按每个 ArrayList 元素的第二个字段进行排序。
数组列表的每个元素都具有以下形式:
field1;field2;field3;field4
并且需要按字段排序。2 有没有办法做到这一点,而不必创建一个临时数组,切换field1
和field2
,对该数组进行排序,然后再切换field1
一次field2
?
感谢您提供的任何帮助
此代码将为您完成:
Collections.sort(list, new Comparator<String>(){
@Overide
public int compare(String s1, String s2){
return s1.split(";")[1].compareTo(s2.split(";")[1]);
}
});
您需要编写一个Comparator<String>
提取第二个字段并对其进行比较的代码。不需要中间数组。只是一点 substring/indexof/regex/ substringBetween。
你可以这样做,创建自己的比较器并使用类似的Collections.sort
东西
Collections.sort(yourArrayList, new Comparator<String>(){
@Overide
public int compare(String s1, String s2){
String s1Field2, s2Field2;
// Do your extracting of field 2 for each String
s1Field2 = s1.split(";")[1];
s2Field2 = s2.split(";")[1];
// You may also want to add to this to ensure that the original strings
// do contain a 'field2'
return s1Field2.compareTo(s2Field2);
}
});