Java 获取所有给定列表中出现的所有字符串

Java 获取所有给定列表中出现的所有字符串,java,string,arraylist,java-7,Java,String,Arraylist,Java 7,我有一个列表:ArrayList名称 我想得到每个列表中出现的所有字符串的列表。是否有一种更简单、更优雅的方法来代替使用4个循环: ArrayList<ArrayList<String>> names = new ArrayList<>(); for (ArrayList<String> n1 : names) { for (String name1 : n1) { for (ArrayList<String>

我有一个列表:ArrayList名称 我想得到每个列表中出现的所有字符串的列表。是否有一种更简单、更优雅的方法来代替使用4个循环:

ArrayList<ArrayList<String>> names = new ArrayList<>();
for (ArrayList<String> n1 : names) {
    for (String name1 : n1) {
        for (ArrayList<String> n2 : names) {
            for (String name2 : n2) {
            }
        }
    }
}
编辑: 我想要一个出现在所有列表中的字符串列表。所以,如果一个字符串只在一个或两个列表中,它就不应该在我的结果列表中


是的,代码必须与Java 7兼容,所以遗憾的是没有流。

您可以将多个列表展平为单个字符串列表

Java 7:

List<String> flattenedResult = new ArrayList<>();
for (List<String> currentNameList : names) {
    flattenedResult.addAll(currentNameList);
}
使用Java 8流:

List<String> flattenedResult = names.stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toList());

可以将多个列表展平为单个字符串列表

Java 7:

List<String> flattenedResult = new ArrayList<>();
for (List<String> currentNameList : names) {
    flattenedResult.addAll(currentNameList);
}
使用Java 8流:

List<String> flattenedResult = names.stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toList());
您可以在Java7上获得帮助。例如,将此列表设置为ArrayList名称:

可以使用retainAll获取交叉点的每个列表中出现的所有字符串:

List<String> commonElements = new ArrayList<>(list1);
for(List<String> tmpList: names){
    commonElements.retainAll(tmpList);
}
输出:

[e3、e4、e5]

您可以在Java7上获得帮助。例如,将此列表设置为ArrayList名称:

可以使用retainAll获取交叉点的每个列表中出现的所有字符串:

List<String> commonElements = new ArrayList<>(list1);
for(List<String> tmpList: names){
    commonElements.retainAll(tmpList);
}
输出:

[e3、e4、e5]


是否要将列表列表展平为单个列表?您还想避免重复元素吗?您已经标记了Java-7-我假设因此您不想要流?您想要列表的交叉点?Java 8可以作为选项吗?您可以将问题标记为Java-7吗?阅读您的问题根本不清楚您是想要列表的交叉点还是并集。请澄清是否要将列表列表展平为单个列表?您还想避免重复元素吗?您已经标记了Java-7-我假设因此您不想要流?您想要列表的交叉点?Java 8可以作为选项吗?您可以将问题标记为Java-7吗?阅读您的问题根本不清楚您是想要列表的交叉点还是并集。请澄清OP目前忽略了澄清其是并集还是交叉点;这看起来很可能是他们想要的。虽然OP目前忽略了澄清它是并集还是交集;这看起来很可能是他们想要的。