我不知道如何为Collectionos.binarySearch()编写比较器。有人可以帮忙吗?示例代码:
List<Object> list1 = new ArrayList<>();
List<List<Object>> list2 = new ArrayList<>();
//loop starts
// adds elements into list1
list1.add(values);
// values是一个包含[3,John,Smith]
if (list2.size() == 0) {
list2.add(list1);//first element
} else {
if (index >= 0) {
int index = Collections.binarySearch(list2, list1, comparator);
list2.add(index, list1);//I want to add these elements in ascending order ?
}
}
//loop ends
如何编写比较器,以便列表2中的元素按升序或降序添加。
答案 0 :(得分:1)
您可以使用实现Comparator<List<Object>>
的匿名类:
int index = Collections.binarySearch(list2, list1, new Comparator<List<Object>>() {
@Override
public int compare(List<Object> o1, List<Object> o2) {
// Your implementation here
return 0;
}
});
答案 1 :(得分:0)
您可以实现IComparer<List<Object>>
class,或使用lambda表达式。
答案 2 :(得分:0)
您只需要创建一个实现Comparator接口的类。
例如,您可以使用匿名类内联:
Comparator<List<Object>> comparator = new Comparator<List<Object>>() {
@Override
public int compare(List<Object> x, List<Object> y) {
// custom logic to compare x and y here. Return a negative number
// if x < y, a positive number if x > y, and 0 otherwise
}
};
Collections.binarySearch(list, comparator);