我有一个以分号分隔的值的ArrayList,需要按每个ArrayList元素的第二个字段进行排序。
数组列表的每个元素都具有以下形式:
field1;field2;field3;field4
并且需要按字段排序。有没有办法在不必创建临时数组的情况下执行此操作,切换field1
和field2
,对该数组进行排序,然后切换{{1又和field1
?
感谢您提供的任何帮助
答案 0 :(得分:3)
您需要编写一个Comparator<String>
来提取第二个字段并进行比较。不需要中间数组。只是一点substring / indexof / regex / substringBetween。
答案 1 :(得分:2)
此代码将为您完成:
Collections.sort(list, new Comparator<String>(){
@Overide
public int compare(String s1, String s2){
return s1.split(";")[1].compareTo(s2.split(";")[1]);
}
});
答案 2 :(得分:0)
您可以执行此操作,创建自己的Comparator并使用{/ 3}}类似
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);
}
});