如何使用java8流比较一对一的两个列表元素的相等性?

时间:2015-10-20 03:46:01

标签: java java-8 java-stream

如何使用java8流比较一对一的两个列表元素的相等性?

    inputNameList = new ArrayList<String>();
    inputNameList.add("ram");
    inputNameList.add("shyam");
    inputNameList.add("hari");      

    outputNameList = new ArrayList<String>();
    outputNameList.add("ram");
    outputNameList.add("shyaM");
    outputNameList.add("ram");

当比较这两个列表时,结果为1,因为只有inputNameList.get(0).equals(outputNameList.get(0))== true;

2 个答案:

答案 0 :(得分:3)

似乎您要查找第一个不匹配的位置或列表大小。您可以使用这样的索引流(假设列表具有相同的长度)来执行此操作:

int nMatches = IntStream
         .range(0, inputNameList.size())
         .filter(idx -> !inputNameList.get(idx).equals(outputNameList.get(idx)))
         .findFirst()
         .orElse(inputNameList.size());

答案 1 :(得分:1)

假设两个列表都具有相同数量的元素,您可以使用IntStream作为:

List<String> inputNameList = new ArrayList<String>();
inputNameList.add("ram");
inputNameList.add("shyam");
inputNameList.add("hari");

List<String> outputNameList = new ArrayList<String>();
outputNameList.add("ram");
outputNameList.add("shyaM");
outputNameList.add("ram");

IntStream.range(0,inputNameList.size()).forEach(i -> {
    if(inputNameList.get(i).equals(outputNameList.get(i))) System.out.println(i);
});

当元素在列表中的索引处相等时,这将打印索引。您可以根据自己的要求进行修改。