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"]