java8 stream 常用转换方法

Set → List

java 复制代码
Set<String> set = new HashSet<>(Arrays.asList("a", "b", "c"));

// 转为 ArrayList
List<String> list = new ArrayList<>(set);

// 转为 LinkedList(如果需要)
List<String> linkedList = new LinkedList<>(set);

Set → Array

java 复制代码
Set<String> set = new HashSet<>(Arrays.asList("a", "b", "c"));

// 方法1:传入空数组(推荐,简洁)
String[] array = set.toArray(new String[0]);

// 方法2:传入指定大小的数组(兼容旧代码)
String[] array2 = set.toArray(new String[set.size()]);

上面2个有也有stream

java 复制代码
// Set → List
List<String> list = set.stream().collect(Collectors.toList());

// Set → Array
String[] array = set.stream().toArray(String[]::new);

List => map

java 复制代码
@Data
@Table(name = "sys_dict_data")
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class DictData extends BaseEntity {
    long dictCode;
    String dictLabel;
    String dictValue;
    String dictType;
    long dictSort;
    String listClass;
    String isDefault;
    String remark;
}
java 复制代码
 // 转换为 Map
      Map<String, DictData> dictMap = dictList.stream()
    .collect(Collectors.toMap(
        DictData::getDictValue, // 作为key
        Function.identity(),
        (v1, v2) -> v1,
        LinkedHashMap::new  // 保持插入顺序
    ));

Stream 基本语法

java 复制代码
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();

List stream 转换 + 过滤 List => List

java 复制代码
private DictDataVO convertToVO(DictData dictData) {
        DictDataVO vo = new DictDataVO();
        BeanUtils.copyProperties(dictData, vo);

        if (dictData.getStatus() != null && !dictData.getStatus().trim().isEmpty()) {
            String statusName = dictCacheService.getDictLabel("sys_normal_disable", dictData.getStatus().trim());
            vo.setStatusName(statusName);
        } else {
            vo.setStatusName("");
        }

        return vo;
    }
java 复制代码
  // 转换为 VO 并填充字典名称 实体类转为前端接受的类
        List<UserVO> voList = userList.stream()
                .filter(Objects::nonNull)
                .map(this::convertToVO)
                .collect(Collectors.toList());

arrays stream 转换 + 过滤

参数是数组, 去除前后空格,删除空的值, 转为long类型, 最后转成List

java 复制代码
  List<Long> idList = Arrays.stream(ids.split(","))
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .map(Long::parseLong)
                .collect(Collectors.toList());

求和

java 复制代码
List<Integer> nums = Arrays.asList(10, 20, 30);
int sum = nums.stream().mapToInt(Integer::intValue).sum();
// 或直接:
int sum2 = nums.stream().reduce(0, Integer::sum);

去重 + 排序

java 复制代码
List<String> words = Arrays.asList("banana", "apple", "banana", "cherry");
List<String> uniqueSorted = words.stream()
                                 .distinct()
                                 .sorted()
                                 .collect(Collectors.toList());
// 结果: ["apple", "banana", "cherry"]
相关推荐
weixin_440784111 小时前
【HandlerThread实现原理】
android·java·开发语言
leoZ2311 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
mubei-1233 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic3 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
都叫我大帅哥6 小时前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java
江南十四行6 小时前
Spring框架核心(上)——IoC控制反转与DI依赖注入详解
java·后端·spring
fb_123457 小时前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
码智社7 小时前
JSON 零基础到资深全体系教程
java·json
wgego9 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
IKUN家族9 小时前
Spring MVC(四)
java·spring·mvc