对列表进行保留顺序的去重
List<Integer> list = List.of(1, 2, 4, 3, 1);
LinkedHashSet<Integer> set = new LinkedHashSet<>(list);
ArrayList<Integer> integers = new ArrayList<>(set);
// 1, 2, 4, 3
按照单逻辑进行删除
List<Integer> integers = new ArrayList<>(List.of(1, 2, 3, 5));
integers.removeIf(x -> x == 1);
按照多种匹配进行删除
List<Integer> integers = new ArrayList<>(List.of(1, 2, 3, 5));
integers.removeAll(List.of(1, 2));
空指针转空列表
ans = null;
ans = Objects.requireNonNullElse(ans, new ArrayList<>());
替换整个列表里面的null值
List<Integer> integers = new ArrayList<>(List.of(1, 2, 3, 5));
integers.add(null);
integers.replaceAll(integer -> integer == null ? 0 : integer);
List<Integer> integers = new ArrayList<>(List.of(1, 2, 3, 5));
integers.add(null);
boolean b = Collections.replaceAll(integers, null, 0);
List<Integer> integers = new ArrayList<>(List.of(1, 2, 3, 5));
integers.add(null);
Collections.reverse(integers);
排序(空指针安全的排序)
integers.sort(Comparator.nullsFirst(Comparator.naturalOrder()));
展平数组
List<List<Integer>> lists = new ArrayList<>();
lists.add(Collections.nCopies(12, 5));
lists.add(Collections.nCopies(12, 6));
List<Integer> ans = new ArrayList<>();
lists.forEach(ans::addAll);
行转列
public class ListUtils {
public static List<List<String>> rowNormaliser(List<List<String>> list) {
TreeMap<Integer, List<String>> treeMap = new TreeMap<>();
for (List<String> stringList : list) {
for (int i = 0; i < stringList.size(); i++) {
treeMap.computeIfAbsent(i, k -> new ArrayList<>()).add(stringList.get(i));
}
}
return new ArrayList<>(treeMap.values());
}
}
ans = new ArrayList<>(List.of(1, 2, 3, 4));
StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
ans.forEach(x -> stringJoiner.add(x.toString()));
乱序洗牌(打乱顺序)
List<List<Integer>> lists = new ArrayList<>();
lists.add(Collections.nCopies(12, 5));
lists.add(Collections.nCopies(12, 6));
List<Integer> ans = new ArrayList<>();
for (List<Integer> list : lists) {
ans.addAll(list);
}
Collections.shuffle(ans);