是否有可能沒有外部foreach來迭代b。需要使用Java 8使用Java 8比較2個整型數組功能
Integer a[]={1,2,3,4};
Integer b[]={9,8,2,3};
for(Integer b1:b) {
Stream.of(a).filter(a1 -> (a1.compareTo(b1) ==0)).forEach(System.out::println);
}
Output: 2 3
是否有可能沒有外部foreach來迭代b。需要使用Java 8使用Java 8比較2個整型數組功能
Integer a[]={1,2,3,4};
Integer b[]={9,8,2,3};
for(Integer b1:b) {
Stream.of(a).filter(a1 -> (a1.compareTo(b1) ==0)).forEach(System.out::println);
}
Output: 2 3
在2個一陽指確定共同的價值觀我會用套,如果你只希望共同的價值觀(即不考慮重複考慮)
Integer a[]={1,2,3,4};
Integer b[]={9,8,2,3};
Set<Integer> aSet = new HashSet<>(Arrays.asList(a));
Set<Integer> bSet = new HashSet<>(Arrays.asList(b));
aSet.retainAll(bSet);
也許是這樣的建議:
public static void main(String[] args) {
Integer a[] = {1, 2, 3, 4};
Integer b[] = {9, 8, 2, 3};
Stream<Integer> as = Arrays.stream(a).distinct();
Stream<Integer> bs = Arrays.stream(b).distinct();
List<Integer> collect = Stream.concat(as, bs)
.collect(Collectors.groupingBy(Function.identity()))
.entrySet()
.stream()
.filter(e -> e.getValue().size() > 1)
.map(e -> e.getKey())
.collect(Collectors.toList());
System.out.println(collect);
}
groupBy
是價值map
到關鍵提取重複錄入編輯:添加不同於初始流。
如果你做a = {1,1}和b = {2,3},它會說1和a都是a和b,這是錯誤的 –
增加了distinct來修復這個問題 –
參見http://stackoverflow.com/questions/17863319/java-find-intersection-of-two-arrays – Tunaki
'a1 - >(a1.compareTo(b1)== 0)'是一個相當混亂的方式說'a1 - > a1.equals(b1)'。您也可以使用'Predicate.isEqual(b1)',或者,如果您可以確定數組中不存在'null',則可以使用'b1 :: equals'。 – Holger
@Tunaki:這些引用非常差。在這兩種情況下,接受的答案都不符合問題。 – Holger