假設我有兩個數組,String[] A= {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};String[] B= {"0", "2", "4", "6", "8", "10", "12"};如何比較兩個數組,以返回另一個包含 A 中 B 中所有值的數組?返回數組:?String[] C= {"2", "4", "6","8","10"};想知道 Java 中的等價物是什么答案中的 C# 代碼:string[]?a1?=?{?"A","B",?"C",?"D"?};
string[]?a2?=?{?"A",?"E",?"I",?"M",?"Q",?"U"?,"Y"?};
string[]?result?=?a1.Where(a2.Contains).ToArray();
3 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
使用流API,你可以這樣做:
String[] result = Arrays.stream(a1) .filter(new HashSet<>(Arrays.asList(a2))::contains) .toArray(String[]::new);
編輯:
只是對于那些好奇是否會為每個元素構造一個新集合的人來說,情況根本不是這樣。
只構造了一個Set實例,上面的代碼相當于:
List<String> list = new ArrayList<>(); HashSet<String> strings = new HashSet<>(Arrays.asList(a2)); for (String s : a1) { if (strings.contains(s)) list.add(s); } String[] result = list.toArray(new String[0]);

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
Set<String> a = new HashSet<>(Arrays.asList(a1)); Set<String> b = new HashSet<>(Arrays.asList(a2)); a.retainAll(b); String[] results = a.toArray(new String[a.size()]);

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
比較適用于以下聲明:
???System.out.println("is?A?equals?to?B:?"?+?Arrays.equals(A,?B)); ???String?[]?joined?=?ObjectArrays.concat(A,?B,?String.class); ???System.out.println("Joined?Array"?+joined);
添加回答
舉報
0/150
提交
取消