자바에서 나는 각 항목을 다음과 같이 배열 된 배열 목록을 갖고있다.문자열 시작 부분에 숫자로 문자열 배열을 정렬하는 방법은 무엇입니까?
12, 바닐라 그라 놀라 바, 91.
어떻게 각 문자열의 첫 번째 숫자가 증가하는 순서로 목록을 정렬 할 수 있습니까? collections.sort()가이 작업을 수행 할 수 있습니까?
자바에서 나는 각 항목을 다음과 같이 배열 된 배열 목록을 갖고있다.문자열 시작 부분에 숫자로 문자열 배열을 정렬하는 방법은 무엇입니까?
12, 바닐라 그라 놀라 바, 91.
어떻게 각 문자열의 첫 번째 숫자가 증가하는 순서로 목록을 정렬 할 수 있습니까? collections.sort()가이 작업을 수행 할 수 있습니까?
collections.sort() 할 수 있습니까?
네,하지만, 당신이 최고의 값을 추출하고이 개념의 아주 기본적인 예입니다
적절하게 비교하기 위해 사용자 정의 Comparator
을해야 ...
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CustomSorter {
public static void main(String[] args) {
List<String> values = new ArrayList<>(25);
values.add("12,Vanilla granola bar,91");
values.add("1,Vanilla granola bar,91");
values.add("50,Vanilla granola bar,91");
values.add("25,Vanilla granola bar,91");
values.add("13,Vanilla granola bar,91");
dump(values);
Collections.sort(values, new SplitComparator());
dump(values);
}
protected static void dump(List<String> values) {
System.out.println(values);
}
public static class SplitComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
int i1 = getIndex(o1);
int i2 = getIndex(o2);
return i1 - i2;
}
protected int getIndex(String o1) {
return Integer.parseInt(o1.split(",")[0]);
}
}
}
잘못 될 수있는 것들이 너무 많아서 재미 있지는 않습니다. 나는 비교 될 String
중 하나를 실제로 확인하기 위해 수표를 만들지 않았고, Comparator
의 요구 사항을 실제로 충족시키지 않았으며 첫 번째 요소가 숫자가 아닌 경우도 처리하지 않았습니다.
더 좋은 해결책은 String
값을 POJO 또는 interface
으로 랩핑하고 적절한 적절한 게터를 제공하는 것입니다. 이렇게하면 Comparator
을 특정 유형의 클래스로 제한하여 더 안전하게 만들 수 있습니다.
aaargg ... 나는 5 분 LOL 씩 늦었습니다. –
@LittleChild 그 일이 발생하면 싫어하지 마세요) – MadProgrammer
hahaha 때 훨씬 더 –