AB两个列表获取A列表存在但是B列表不存在的数据
List<Integer> a = List.of(1, 2, 3);
List<Integer> b = List.of(3, 4, 5);
ArrayList<Integer> integers = new ArrayList<>(a);
integers.removeAll(b);
// [1, 2]
去重
对列表进行保留顺序的去重
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里面的数据
按照单逻辑进行删除
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));
删除Array里面的数据
lang3
String[] strings = ArrayUtils.removeAllOccurrences(new String[]{null, "1"}, null);
替换
空指针转空列表
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);
转化Array为List(包括int【】等)
需要org.springframework.util.CollectionUtils;
List<Integer> integerList = new ArrayList<>();
CollectionUtils.mergeArrayIntoCollection(new int[]{1, 2, 3, 4}, integerList);
// [1, 2, 3, 4]
// 想要保留类型必须得这么写,不然会变成List<Object>
流:
int[] ints = {1, 3, 5};
List<Integer> collect = Arrays.stream(ints).boxed().collect(Collectors.toList());
// 不可变