方式1 :
public static <T> void moveElementToFirst(List<T> list, Predicate<T> predicate) {
int index = -1;
for (int i = 0; i < list.size(); i++) {
if (predicate.test(list.get(i))) {
index = i;
break;
}
}
if (index >= 0) {
T element = list.remove(index);
list.add(0, element);
}
}
方式2 :
public static <T> void moveElementToFirst(List<T> list, Predicate<T> predicate) {
List<T> temp = new ArrayList<>();
for (T element : list) {
if (predicate.test(element)) {
temp.add(element);
}
}
list.removeAll(temp);
list.addAll(0, temp);
}
方式3:
public static <T> void moveElementToFirst(List<T> list, Predicate<T> predicate) {
List<T> filtered = list.stream().filter(predicate).collect(Collectors.toList());
list.removeAll(filtered);
list.addAll(0, filtered);
}