【Java 基础】-- 将 List<String[]> 转为 List<String>

目录

1、需求描述

2、代码实现

[2.1、使用 jdk 8 的特性](#2.1、使用 jdk 8 的特性)

[2.2、普通方式(不使用 Stream API)](#2.2、普通方式(不使用 Stream API))

3、两种方式的区别


1、需求描述

需要将 List<String[]> 转换为 List<String>,并将每个 String[] 的元素用 \t 拼接成单个字符串。

2、代码实现

2.1、使用 jdk 8 的 Stream API

java 复制代码
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

代码解析

  1. stream() : 将 List<String[]> 转换为流以处理每个 String[]
  2. map : 使用 String.join("\t", array) 将每个 String[] 转换为用 \t 分割的字符串。
  3. collect(Collectors.toList()) : 将流的结果收集回 List<String>

2.2、普通方式(不使用 Stream API)

如果不使用流操作,可以用传统的循环实现:

java 复制代码
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、两种方式的区别

  • **流式方式:**更加简洁,适合处理需要链式调用的逻辑。
  • **传统方式:**易于理解,适合初学者或复杂逻辑场景。
相关推荐
蓝婷儿9 分钟前
第二章:CSS秘典 · 色彩与布局的力量
前端·css
flying robot11 分钟前
js在浏览器执行原理
开发语言·javascript·ecmascript
Wyc724091 小时前
HTML:入门
前端·html
Sunny_lxm1 小时前
自定义列甘特图,原生开发dhtmlxgantt根特图,根据数据生成只读根特图,页面展示html demo
前端·html·甘特图·dhtmlxgantt
熊猫钓鱼>_>2 小时前
建筑IT数字化突围:建筑设计企业的生存法则重塑
前端·javascript·easyui
代码小将2 小时前
Leetcode209做题笔记
java·笔记·算法
专注_每天进步一点点2 小时前
idea 启动Springboot项目在编译阶段报错:java: OutOfMemoryError: insufficient memory
java·spring boot·intellij-idea
dhxhsgrx3 小时前
PYTHON训练营DAY25
java·开发语言·python
GISer_Jing4 小时前
前端性能指标及优化策略——从加载、渲染和交互阶段分别解读详解并以Webpack+Vue项目为例进行解读
前端·javascript·vue
不知几秋4 小时前
数字取证-内存取证(volatility)
java·linux·前端