在Java中比较两个字符串数组并返回比较结果

假设我有两个数组,

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();


MM们
浏览 125回答 3
3回答

慕丝7291255

使用流API,你可以这样做:String[]&nbsp;result&nbsp;=&nbsp;Arrays.stream(a1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(new&nbsp;HashSet<>(Arrays.asList(a2))::contains) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toArray(String[]::new);编辑:只是对于那些好奇是否会为每个元素构造一个新集合的人来说,情况根本不是这样。只构造了一个Set实例,上面的代码相当于:List<String>&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<>(); HashSet<String>&nbsp;strings&nbsp;=&nbsp;new&nbsp;HashSet<>(Arrays.asList(a2)); for&nbsp;(String&nbsp;s&nbsp;:&nbsp;a1)&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;if&nbsp;(strings.contains(s))&nbsp;list.add(s);&nbsp; } String[]&nbsp;result&nbsp;=&nbsp;list.toArray(new&nbsp;String[0]);

汪汪一只猫

Set<String>&nbsp;a&nbsp;=&nbsp;new&nbsp;HashSet<>(Arrays.asList(a1)); Set<String>&nbsp;b&nbsp;=&nbsp;new&nbsp;HashSet<>(Arrays.asList(a2)); a.retainAll(b); String[]&nbsp;results&nbsp;=&nbsp;a.toArray(new&nbsp;String[a.size()]);

江户川乱折腾

比较适用于以下声明:   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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java