java日常开发中常用的集合工具类方法归总(java8 stream)

时间:2024-07-15 07:07:22
1、创建map集合的方式

方式1:

Map<String, Object> map = new HashMap<>();
map.put("a", "test");
map.put("b", "since");

方式2:

Map<String, Object> map2 = new HashMap<>() {{
       put("c", "driver");
       put("d", "carer");
}};

方式3:

 Map<String, Object> map3 = Maps.newHashMap();
 map3.put("e", "desk");
 map3.put("f", "book");

方法4:创建空map

        java.util.Collections.emptyMap();

方法5 使用Guava库的ImmutableMap(不可变)

 Map immutableMap = ImmutableMap.of("a", 1, "b", 2, "c", 3);

方法6 使用Builder模式来创建更复杂的不可变Map

 Map<String,Integer> immutableMapUsingBuilder = ImmutableMap.<String,Integer>builder()
                .put("a", 1)
                .put("b", 4)
                .build();

方法7:java9及以后的创建方式

Map java9ImmutableMap = Map.of("a", 1, "b", 2, "c", 3);

// 或者
Map java9MapOfEntries = Map.ofEntries(
                Map.entry("a", 1),
                Map.entry("b", 2),
                Map.entry("c", 3)
        );

 方法8:Collections.singletonMap

 Map<String, String> map = Collections.singletonMap("key1", "value1");
2、创建list集合的方式

方式1:

  List<String> list1 = new ArrayList<>();
  list1.add("ele1");
  list1.add("ele2");

方式2:

List<String> list2 = Lists.newArrayList();

方式3:

List<String> list3 = Lists.newArrayList("test1", "test2", "test3");

方式4:

Arrays.asList("a1", "a2", "a3");

方式5:创建空list集合

List emptyList = java.util.Collections.emptyList();

方式6:通过stream创建

List streamList = Stream.of("a", "b", "c").collect(Collectors.toList());

方式7:不可变list

ImmutableList<String> list = ImmutableList.of("a", "b", "c", "d");

 方式8:Collections.singletonList

List<String> list = Collections.singletonList("test");
3、map集合常用操作

判断map集合是否为空;获取所有键、所有值、获取值根据键的信息

Map<String, String> map = ImmutableMap.of("key1", "浙江省", "key2", "江苏省", "key3", "河南省");
        // 判断Map是否为空方法
        boolean result1 = MapUtils.isEmpty(map);
        boolean result2 = CollectionUtils.isEmpty(map);
        // 获取Map中的所有键
        Set<String> keys = map.keySet();
        // 获取Map中的所有值
        Collection<String> values = map.values();
        // 获取Map中的所有键值对
        Set<Map.Entry<String, String>> entries = map.entrySet();
        // 根据键获取值,如果不存在则返回null
        String province1 = map.getOrDefault("key1","无省份信息"); // 浙江省
        String province2 = map.getOrDefault("key4","无省份信息"); // 无省份信息
4、java8 stream常用的一些方法归总

方法1:Collectors.toMap;该方法是将数据转换为map对象,map对象的key要唯一,如果转换之前key有可能存在的话通过(k1,k2)->k1来决定取哪一个key,否则的话会报错

方法2:Collectors.groupingBy 分组的意思,按照某个字段进行分组,我按照省份进行分组,分组后的数据浙江省的有两条,河南省的有一条


方法3:对list集合判断是否为空然后进行stream操作

List<String> collect = Optional.ofNullable(userList).orElse(Collections.emptyList()).stream().map(User::getName)
                .collect(Collectors.toList());

以上总结均为日常开发中高频使用到的,后续有其他方法会进行不断补充。欢迎大家留言补充