与えられた文字列のデータ仕様に沿った処理のみで書くのであれば、
java
1import java.util.Arrays;
2import java.util.List;
3import java.util.StringTokenizer;
4import java.util.stream.Collectors;
5
6public class SortSample {
7 List<String> list = Arrays.asList(
8 "92675,San Juan Capistrano,Orange",
9 "92676,Silverado,New Jersey",
10 "92677,Laguna Niguel,New York",
11 "Abc", // カンマの含まれていない文字列
12 "" // 空文字列
13 );
14
15 public static void main(String g[]) {
16 SortSample sample = new SortSample();
17
18 sample.sort();
19 }
20
21 void sort() {
22 List<String> sorted = list.stream()
23 .sorted(
24 (e1, e2) -> {
25 return lastElement(e1).compareTo(lastElement(e2));
26 }
27 ).collect(Collectors.toList());
28
29 sorted.stream().forEach(System.out::println);
30
31 }
32
33 String lastElement(String target) {
34 StringTokenizer tokenizer = new StringTokenizer(target, ",");
35 String ret = "";
36 while (tokenizer.hasMoreTokens()) {
37 ret = tokenizer.nextToken();
38 }
39 return ret;
40 }
41
42}
43
でしょうか。