我有一个.txt文件,其中包含FirstName LastName对,如下所示:
(当然没有子弹)分隔符是空格。任务是按照姓氏对这个文件进行排序,所以看起来像这样:
我进行了搜索和搜索,但没有找到任何我能理解的解释。这样做有简单的方法吗?
答案 0 :(得分:1)
确保没有中间名,最后没有Jr
这样的后缀。
Scanner s = new Scanner(new File("filepath"));
ArrayList<String> list = new ArrayList<String>();
while (s.hasNext())
list.add(s.next());
s.close();
static class LastNameComparator implements Comparator<String> {
public int compare(String b1, String b2) {
String[] arr1 = b1.split(" ");
String[] arr2 = b2.split(" ");
if (arr1.length > 1 && arr2.length > 1)
return arr1[arr1.length-1].compareTo(arr2[arr2.length-1]);
else
return 0;
}
}
Collections.sort(list, new LastNameComparator());
FileWriter writer = new FileWriter("outFile.txt");
for(String str: list) {
writer.write(str);
}
writer.close();
答案 1 :(得分:1)
只需编写一个Comparator,它会获取String中的第二个单词并进行比较。
public class StringComparator implements Comparator<String> {
public int compare(String b1, String b2) {
return b1.split(" ")[1].compareTo(b2.split(" ")[1]);
}
}
然后您可以使用Arrays.sort(array, new StringComparator());