目录
1、需求描述
2、代码实现
2.1、使用 jdk 8 的特性
2.2、普通方式(不使用 Stream API)
3、两种方式的区别
1、需求描述
需要将 List<String[]>
转换为 List<String>
,并将每个 String[]
的元素用 \t
拼接成单个字符串。
2、代码实现
2.1、使用 jdk 8 的 Stream API
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ListConversion {
public static void main(String[] args) {
// 示例数据:List<String[]>
List<String[]> listOfArrays = new ArrayList<>();
listOfArrays.add(new String[]{"a", "b", "c"});
listOfArrays.add(new String[]{"d", "e"});
listOfArrays.add(new String[]{"f"});
// 转换为 List<String>
List<String> listOfStrings = listOfArrays.stream()
.map(array -> String.join("\t", array)) // 将 String[] 转为用 \t 分割的字符串
.collect(Collectors.toList());
// 输出结果
listOfStrings.forEach(System.out::println);
}
}
输出结果:
a b c
d e
f
代码解析
-
stream()
: 将List<String[]>
转换为流以处理每个String[]
。 -
map
: 使用String.join("\t", array)
将每个String[]
转换为用\t
分割的字符串。 -
collect(Collectors.toList())
: 将流的结果收集回List<String>
。
2.2、普通方式(不使用 Stream API)
如果不使用流操作,可以用传统的循环实现:
import java.util.ArrayList;
import java.util.List;
public class ListConversion {
public static void main(String[] args) {
// 示例数据:List<String[]>
List<String[]> listOfArrays = new ArrayList<>();
listOfArrays.add(new String[]{"a", "b", "c"});
listOfArrays.add(new String[]{"d", "e"});
listOfArrays.add(new String[]{"f"});
// 转换为 List<String>
List<String> listOfStrings = new ArrayList<>();
for (String[] array : listOfArrays) {
listOfStrings.add(String.join("\t", array)); // 将 String[] 转为用 \t 分割的字符串
}
// 输出结果
for (String str : listOfStrings) {
System.out.println(str);
}
}
}
3、两种方式的区别
- 流式方式:更加简洁,适合处理需要链式调用的逻辑。
- 传统方式:易于理解,适合初学者或复杂逻辑场景。