【发布时间】:2018-11-06 06:01:57
【问题描述】:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Delete
{
public static void main(String[] args)
{
List<List<String>> list = new ArrayList<>();
list.add(List.of("A","B","C","R"));
list.add(List.of("E","F","G","F"));
list.add(List.of("A","B","C","D"));
}
}
我想获取第一列中包含"A" 的所有行。对于上面的例子list,结果应该只是第一行和第三行:
["A", "B", "C", "R"]
["A", "B", "C", "D"]
我更喜欢使用 Java 8 stream 的解决方案。
我的另一个问题How to find unique value of a column of a 2D ArrayList in java? 可能会提供一些额外的背景信息。
【问题讨论】:
-
你进一步尝试了什么?
-
行是什么意思?用最少的例子提供一些输入和输出
-
IntStream.range(0, list.size()) .filter(i -> list.get(i).get(0).equals("A")) .boxed() .collect(Collectors.toList()); -
您声明您希望所有行都带有“
"A"in first columns”。您的意思是“列”还是“列”(即您是只查找第一列还是多列)?您还声明结果应该是“仅第一行和第二行”,但这些行在第一列中没有"A"。第一行和第三行的第一列有"A"。第二行甚至没有"A"。然后,您声明“答案应该适用于任何列和任何列的值”。这是否意味着您需要人们编写一个同时接受匹配列和匹配值的函数? -
我已编辑问题以澄清我在上面评论过的问题。鉴于您已接受答案,编辑反映您的意图反映在该答案中。如果您确实想要不同的东西,请查看并恢复编辑。
标签: java list java-8 java-stream