You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以第二列为筛选条件从多维数组行中获取指定值

按数组第二列值分组生成逗号分隔字符串(Java实现)

问题场景

现有如下Java多维数组:

String[][] array = {{"A", "1"},
                    {"B", "1"},
                    {"C", "2"},
                    {"D", "2"},
                    {"E", "1"}};

需要根据第二列的值,将对应第一列的元素拼接成两个逗号分隔的字符串:

string one : A,B,E    // 对应第二列值为1的元素
string two : C,D      // 对应第二列值为2的元素

解决方案1:使用HashMap循环处理

适配所有Java版本,逻辑清晰易懂:

import java.util.HashMap;
import java.util.Map;

public class GroupArrayDemo {
    public static void main(String[] args) {
        String[][] array = {{"A", "1"}, {"B", "1"}, {"C", "2"}, {"D", "2"}, {"E", "1"}};
        
        // 用HashMap存储分组关系:key是第二列的值,value是拼接中的字符串
        Map<String, StringBuilder> groupMap = new HashMap<>();
        
        for (String[] row : array) {
            String groupKey = row[1];
            String element = row[0];
            
            // 若分组不存在则新建StringBuilder,否则直接追加元素和逗号
            groupMap.computeIfAbsent(groupKey, k -> new StringBuilder()).append(element).append(",");
        }
        
        // 去除末尾多余的逗号,得到最终字符串
        String group1 = groupMap.get("1").toString().replaceAll(",$", "");
        String group2 = groupMap.get("2").toString().replaceAll(",$", "");
        
        // 输出结果
        System.out.println("string one : " + group1 + "    for 1");
        System.out.println("string two : " + group2 + "    for 2");
    }
}

解决方案2:使用Java 8+ Stream API

代码更简洁,利用流的分组和收集器直接完成拼接:

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

public class GroupWithStreamDemo {
    public static void main(String[] args) {
        String[][] array = {{"A", "1"}, {"B", "1"}, {"C", "2"}, {"D", "2"}, {"E", "1"}};
        
        // 流式分组并直接拼接成逗号分隔的字符串
        Map<String, String> resultMap = Arrays.stream(array)
                .collect(Collectors.groupingBy(
                        row -> row[1], // 按第二列值分组
                        Collectors.mapping(row -> row[0], Collectors.joining(",")) // 映射并拼接第一列元素
                ));
        
        // 输出结果
        System.out.println("string one : " + resultMap.get("1") + "    for 1");
        System.out.println("string two : " + resultMap.get("2") + "    for 2");
    }
}

运行结果

两种方案运行后都会输出:

string one : A,B,E    for 1
string two : C,D      for 2

内容的提问来源于stack exchange,提问作者Игорь Матвеев

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:45:07