如果两个元素1和A位于同一位置,我想获得它们的位置。
例如,列表1具有元素{1,1,3,1,5} 清单2具有元素{Q,B,Z,A,c}
输出应为3。
下面是我的代码,它很好用,我正在寻找是否有人有任何优化的解决方案,然后请答复。
或使用 Java8
的解决方案public class GetIndex {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> one = Arrays.asList("1", "1", "3", "1", "5");
List<String> two = Arrays.asList("Q", "B", "Z", "A", "C");
for (int i = 0; i < one.size(); i++) {
if (one.get(i).equals("1") && two.get(i).equals("A")) {
System.out.println("Index where 1 & A: " + i);
}
}
}
}
答案 0 :(得分:1)
相同,但使用的是Java8流api:
IntStream.range(0, one.size()).boxed()
.filter(i -> one.get(i).equals("1") && two.get(i).equals("A"))
.forEach(index -> System.out.println("Index " + index));
要存储索引,请使用.collect(Collectors.toList())
而不是.forEach(..)
。然后整个表达式返回List<Integer>
答案 1 :(得分:0)
您的代码基于one
小于或等于two
的事实,这可能是不正确的。
您可能想通过使用
进行改进for (int i = 0; i < Math.min(one.size(), two.size()); i++) {
否则,就运行时复杂性而言,最糟糕的情况是O(N),这时不存在这样的对,并且您不会比单次执行做得更好。