1. 将数组拼接成带引号包裹的字符串
List<String> result = list.stream().map(FileItem::getFileName).collect(Collectors.toList());
- 将result转为String字符串,并用逗号连接
String str = result..map(String::valueOf).collect(Collectors.joining(","));
2. 将数组拼接成带引号包裹的字符串
- 单引号
String str = list.stream().map(s->"'" + s +"'").collect(Collectors.joining(","));
- 双引号
String str = list.stream().map(s->"\""+ s +"\"").collect(Collectors.joining(","));
3. 过滤数据并分组
Map<String, List<Student>> collect = list.stream().filter(s -> (StringUtils.isNotEmpty(s.getId())))
.collect(Collectors.groupingBy(Student::getId));
4. 将(3)中分组后的list数据去重
collect.forEach((k, v) ->
collect.put(k,v.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(Student::getAge))), ArrayList::new)))
);
5. 对list进行两层分组
List<Map<String,String>> data = new ArrayList<>();
data.add(new HashMap<String,String>(){{put("id","1");put("major","通信");put("warehouse","西安");put("name","张三");}});
data.add(new HashMap<String,String>(){{put("id","2");put("major","通信");put("warehouse","西安");put("name","李四");}});
data.add(new HashMap<String,String>(){{put("id","3");put("major","通信");put("warehouse","北京");put("name","王五");}});
data.add(new HashMap<String,String>(){{put("id","4");put("major","通信");put("warehouse","北京");put("name","马六");}});
data.add(new HashMap<String,String>(){{put("id","5");put("major","软件");put("warehouse","西安");put("name","田七");}});
data.add(new HashMap<String,String>(){{put("id","6");put("major","软件");put("warehouse","北京");put("name","老八");}});
data.add(new HashMap<String,String>(){{put("id","7");put("major","软件");put("warehouse","北京");put("name","老九");}});
data.add(new HashMap<String,String>(){{put("id","8");put("major","软件");put("warehouse","北京");put("name","老爹");}});
Map<String, Map<String, List<Map<String, String>>>> result1 = data.stream().collect(Collectors.groupingBy(m -> m.get("major"), Collectors.groupingBy(m -> m.get("warehouse"))));
Map<String, Map<String, Map<String, String>>> result2 = data.stream().collect(Collectors.groupingBy(m -> m.get("major"),
Collectors.toMap(m -> m.get("warehouse"), Function.identity(),(k, v) -> k)));
{
"软件": {
"西安": [{
"major": "软件",
"name": "田七",
"id": "5",
"warehouse": "西安"
}],
"北京": [{
"major": "软件",
"name": "老八",
"id": "6",
"warehouse": "北京"
},
{
"major": "软件",
"name": "老九",
"id": "7",
"warehouse": "北京"
},
{
"major": "软件",
"name": "老爹",
"id": "8",
"warehouse": "北京"
}]
},
"通信": {
"西安": [{
"major": "通信",
"name": "张三",
"id": "1",
"warehouse": "西安"
},
{
"major": "通信",
"name": "李四",
"id": "2",
"warehouse": "西安"
}],
"北京": [{
"major": "通信",
"name": "王五",
"id": "3",
"warehouse": "北京"
},
{
"major": "通信",
"name": "马六",
"id": "4",
"warehouse": "北京"
}]
}
}
6. 按指定大小对list进行分割
int maxNum = 999;
int step = (lineId.size() + maxNum - 1) / maxNum;
List<List<String>> list = Stream.iterate(0, n -> n + 1)
.limit(step)
.parallel()
.map(a -> lineId.stream()
.skip(a * maxNum)
.limit(maxNum)
.parallel()
.collect(Collectors.toList()))
.collect(Collectors.toList());
持续更新ing~