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"]
相关推荐
vx-程序开发7 分钟前
【毕设分享】springboot废品上门回收微信小程序---附源码94491
java·spring boot·毕业设计·源码·课程设计·毕设·大作业
宸津-代码粉碎机8 分钟前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案
java·大数据·人工智能·python·spring
敲代码的嘎仔37 分钟前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
youyou-06061 小时前
AUTOSAR‑COM 常见问题 QA (1)
java·linux·服务器·单片机·汽车
谢亮_vipxieliang1 小时前
ValidX时间段验证详解:ISO 8601标准与简化格式
java·spring boot·后端·spring·spring cloud·hibernate
Lsetea1 小时前
Java 请求 HTTPS 报 PKIX path building failed:从证书链到 truststore 的完整排查
java·https·ssl证书·keytool·truststore
蓝桉柒72 小时前
java判断语句
java·开发语言
Zane19942 小时前
String::compareTo凭什么能当参数传?方法引用的四种形式讲透
java·后端
青山木2 小时前
Hot 100 --- 打家劫舍
java·数据结构·算法·leetcode·动态规划
敲代码的嘎仔2 小时前
28届后端开发-百人小厂面试题
java·后端·面试·程序员·秋招·实习·转正