Java如何从嵌套列表(列表的列表)中提取各子列表的首个元素
问题原因
你的代码运行失败主要有三个问题:
forEach方法无返回值(返回void),无法作为参数传入ArrayList的构造方法- 你的泛型声明存在矛盾:声明
List<ListView>但实际存储的是字符串类型元素,按你实际存储的内容应该修正为List<List<String>> - Java List没有
getFirstValue()这个方法,通用获取第一个元素的方法是get(0),Java 21及以上版本可以用更直观的getFirst()方法
实现方案
方案1:Stream流写法(Java 8及以上通用,代码简洁)
// 修正嵌套列表的泛型声明,匹配你存储字符串的实际场景 private List<List<String>> listView; // 列表初始化逻辑不变 listView = List.of(firstlist(), secondlist(), thirdlist()); // 提取所有子列表第一个元素存入ArrayList List<String> listViewTitle = listView.stream() .map(sublist -> sublist.get(0)) .collect(Collectors.toCollection(ArrayList::new));
方案2:普通for循环写法(逻辑直观,易理解)
List<String> listViewTitle = new ArrayList<>(); for (List<String> sublist : listView) { // 可选增加非空校验,避免子列表为空/为null时抛出异常 if (sublist != null && !sublist.isEmpty()) { listViewTitle.add(sublist.get(0)); } }
两种方案最终得到的listViewTitle里就会按顺序存入mango、book、van三个元素。
内容的提问来源于stack exchange,提问作者user5167985
相关产品推荐
相关产品推荐

