如何使用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;
答案 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);
});
当元素在列表中的索引处相等时,这将打印索引。您可以根据自己的要求进行修改。