如何使用 Collections.binarySearch for ArrayList<List<String>> arr in java

How to use Collections.binarySearch for ArrayList<List<String>> arr in java

我有一个 ArrayList<List<String>>,我正在尝试在集合中使用内置的二进制搜索,但我总是遇到错误

int index = Collections.binarySearch(arraylistdata, id);

其中 arraylistdata 是我的 ArrayList of List<String>.

public class CollectionsTest {
    
    @Test
    void test() {
        List<String> list = List.of("a", "b", "c");
        int index = Collections.binarySearch(list, "b");
        Assertions.assertEquals(1, index);
    }
}

这很好用,但你需要知道 Collections#binarySearch 接受 List<? extends Comparable<? super T>> 作为它的第一个参数。

虽然在您的情况下,ArrayList<List<String>> 不符合要求,因为 List<String>List<?> 本身不是 Comparable 对象。