List<String>遍历每一个字段以逗号分隔存在新的list<String>去重
时间: 2023-11-11 19:02:20 浏览: 183
可以使用Java 8的Stream API和Collectors类来实现:
```java
List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");
List<String> result = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
System.out.println(result); // 输出 [a, b, c, d]
```
首先使用Stream.concat()方法将两个List合并成一个Stream,然后使用distinct()方法去重,最后使用Collectors.toList()方法将结果收集到一个List中。
相关问题
List<TrainingPlanCheckPost> 怎么将多条数据拼成一个String字段
`List<TrainingPlanCheckPost>` 是一个集合,其中包含 `TrainingPlanCheckPost` 类型的对象,每个对象通常会有字符串类型的字段。如果你想把它们转换成一个 String,并且可能是通过某种分隔符连接起来的,可以采用以下步骤:
1. 首先,你需要遍历这个列表 (`for` 循环)。
2. 对于每一个 `TrainingPlanCheckPost` 实例,获取你需要合并的那个字符串字段。假设字段名为 `description`。
3. 将每个实例的 `description` 加入到结果字符串中。如果这是第一个元素,就直接添加;如果不是,加上指定的分隔符,比如逗号 `,` 或换行符 `\n`。
4. 当所有的元素都处理完后,你可以返回最终的字符串。
下面是一个简单的示例代码(假设有一个方法 `toString()` 来表示单个对象的描述字符串):
```java
public class TrainingPlanCheckPost {
private String description;
// getters and setters...
}
// 使用 Lambda 表达式简化代码:
String combinedDescription = list.stream()
.map(TrainingPlanCheckPost::getDescription)
.collect(Collectors.joining(", ")); // 使用逗号分隔
// 如果需要换行分隔:
String combinedDescriptionWithNewline = list.stream()
.map(post -> post.getDescription())
.reduce("", (str, desc) -> str + "\n" + desc);
```
bufferedreader转化List<Map<String,Object>>
可以通过以下步骤将 BufferedReader 转换为 List<Map<String,Object>>:
1. 创建一个 List<Map<String,Object>> 对象,用于存储转换后的数据。
2. 定义一个 String 类型的变量 line,用于存储读取的每一行数据。
3. 使用 while 循环读取 BufferedReader 中的数据,将每一行数据存储到 line 变量中。
4. 如果 line 不为 null,通过 split 方法将 line 按照指定的分隔符切割成字符串数组。
5. 创建一个 Map<String,Object> 对象,用于存储每一行数据的键值对。
6. 遍历字符串数组,将每个元素作为键值对的 value,将对应的字段名作为键存储到 Map 中。
7. 将 Map 对象添加到 List 中。
8. 返回 List<Map<String,Object>> 对象。
下面是示例代码:
```
public static List<Map<String,Object>> convert(BufferedReader reader, String separator) throws IOException {
List<Map<String,Object>> list = new ArrayList<>();
String line = null;
while ((line = reader.readLine()) != null) {
String[] array = line.split(separator);
Map<String,Object> map = new HashMap<>();
for (int i = 0; i < array.length; i++) {
map.put("col" + i, array[i]);
}
list.add(map);
}
return list;
}
```
其中,reader 参数为 BufferedReader 对象,separator 参数为指定的分隔符,例如逗号、制表符等。返回值为 List<Map<String,Object>> 对象,即转换后的数据。
阅读全文