给定一个数组列表并排序
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(4);
list1.add(15);
list1.add(16);
list1.add(3);
list1.add(3);
list1.add(8);
System.out.println(list1); // [1, 4, 15, 16, 3, 3, 8]
Collections.sort(list1,3);
System.out.println(list1); // [1, 3, 3, 4, 8, 15, 16]
To find larger或在排序的重复列表中相等,比如'3'
int index = Collections.binarySearch(list1, 3);
ArrayList<Integer> list2 = new ArrayList<> (list1.subList(index < 0 ? - index - 1 : index, list1.size()));
给我们
[3,3,4,8,15,16]
但是对于较小或相同的情况,如何做到这一点?这是我试过的。
ArrayList<Integer> list3 = new ArrayList<> (list1.subList(0, index < 0 ? - index - 1 : index + 1));
输出
[1, 3]
预期产出
[1, 3, 3]
答案 0 :(得分:1)
您可以使用https://docs.oracle.com/javase/8/docs/api/java/util/List.html的indexOf
和lastIndexOf
方法。一个例子
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(4);
list1.add(15);
list1.add(16);
list1.add(3);
list1.add(3);
list1.add(8);
System.out.println(list1); // [1, 4, 15, 16, 3, 3, 8]
Collections.sort(list1);
System.out.println(list1); // [1, 3, 3, 4, 8, 15, 16]
//For equals or larger than 3
int index = list1.indexOf(3);
List<Integer> list2 = index > -1 ? list1.subList(index, list1.size()) : new ArrayList<>();
System.out.println(list2); // [3, 3, 4, 8, 15, 16]
//For equals or smaller than 3
index = list1.lastIndexOf(3);
List<Integer> list3 = index > -1 ? list1.subList(0, index + 1) : new ArrayList<>();
System.out.println(list3); // [1, 3, 3]