Updated : Collections.sort()를 사용하여 comparator 매개 변수로 arrayList를 정렬하려고합니다. 그런 다음 binarysearch를 수행하십시오.java : 비교기가있는이 binarySearch가 작동하지 않는 이유는 무엇입니까?
package collection;
import java.util.*;
public class TryBinarySearch {
public static void main(String[] args){
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 100; i++)
list.add(i);
System.out.println(list);
int b = Collections.binarySearch(list, 8);
System.out.println(b); // a is 8 as expected.
Collections.shuffle(list);
System.out.println(list);
Collections.sort(list, new
Comparator<Integer>(){
public int compare(Integer a, Integer b){
return b.intValue() - a.intValue();
}
});
System.out.println(list); //list is reversed as expected.
int a = Collections.binarySearch(list, 8);
System.out.println(a); // why a is -1?
}
}
b는 예상대로 8이다. 역순으로 정렬했습니다. 제 질문은 왜 a가 92 대신에 -1 인지요?
에 따라 오름차순으로 정렬해야합니다. 이것은 이전과 마찬가지로, 당신이 당신의 뒤섞음을 정렬하려고하지 않았던 것들을 바꿉니다. – Makoto
나는 목록을 분류했다.그 요소의 자연 순서에 따라 목록을 오름차순으로 정렬해야한다는 것을 깨달았습니다. 역순으로리스트를 정렬했기 때문에 a의 값은 -1입니다. –
설명서를 읽으십시오. '목록은 자연 순서에 따라 오름차순으로 정렬되어야한다. ' – njzk2