Java 工具类(列表)

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());
// 不可变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值