Java 查找两个ArrayLists中的共同元素
给定两个ArrayLists,任务是在Java中打印两个ArrayLists中的所有共同元素。
例子
输入: List1 = ["Hii", "Geeks", "for", "Geeks"],
List2 = ["Hii", "Geeks", "Gaurav"]
输出: [Hii, Geeks, Geeks]
输入: List1 = ["a", "b", "c", "d", "e", "f"],
List2 = ["b", "d", "e", "h", "g", "c"]
输出:[b, c, d, e]
- 使用 Collections.retainAll() 方法
语法:
Collections1.retainAll(Collections2)
这个方法只保留两个集合的共同元素 在Collection1中保留两个Collection的共同元素。
步骤:
- 获取两个ArrayLists。
- 使用Collection.retainAll()方法找到两个列表中的共同元素。这个方法只在Collection1中保留两个集合的共同元素。
- List 1现在只包含共同元素。
下面是上述方法的实现。
程序:通过修改List1的内容。
// Java Program to find common elements
// in two ArrayLists
// Using retainAll() method
// import ArrayList package
import java.util.ArrayList;
public class GFG {
// main method
public static void main(String[] args)
{
// create ArrayList list1
ArrayList<String>
list1 = new ArrayList<String>();
// Add values in ArrayList
list1.add("Hii");
list1.add("Geeks");
list1.add("for");
list1.add("Geeks");
// print list 1
System.out.println("List1: "
+ list1);
// Create ArrayList list2
ArrayList<String>
list2 = new ArrayList<String>();
// Add values in ArrayList
list2.add("Hii");
list2.add("Geeks");
list2.add("Gaurav");
// print list 2
System.out.println("List2: "
+ list2);
// Find the common elements
list1.retainAll(list2);
// print list 1
System.out.println("Common elements: "
+ list1);
}
}
输出:
List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]
程序 2: 通过保留List1的内容
// Java Program to find common elements
// in two ArrayLists
// Using retainAll() method
// import ArrayList package
import java.util.ArrayList;
public class GFG {
// main method
public static void main(String[] args)
{
// create ArrayList list1
ArrayList<String>
list1 = new ArrayList<String>();
// Add values in ArrayList
list1.add("Hii");
list1.add("Geeks");
list1.add("for");
list1.add("Geeks");
// print list 1
System.out.println("List1: "
+ list1);
// Create ArrayList list2
ArrayList<String>
list2 = new ArrayList<String>();
// Add values in ArrayList
list2.add("Hii");
list2.add("Geeks");
list2.add("Gaurav");
// print list 2
System.out.println("List2: "
+ list2);
// Create ArrayList list3
ArrayList<String>
list3 = new ArrayList<String>(list1);
// Store the comparison output
// in ArrayList list3
list3.retainAll(list2);
// print list 3
System.out.println("Common elements: "
+ list3);
}
}
输出:
List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]
- 使用 Stream filter
语法:
list1.stream()
.filter(list2::contains)
.collect(Collectors
.toList()));
This method returns element if found in second list.
步骤:
- 首先创建两个ArrayList并添加列表的值。
- 使用stream()方法将ArrayList转换为Stream。
- 使用contains()方法将过滤条件设定为不同。
- 使用collect()方法将过滤后的值收集为列表。这个列表将返回两个列表中的共同元素。
- 打印列表3
下面是上述方法的实现。
代码:
// Java Program to find common elements
// in two ArrayLists
// Using Stream filter method
// import ArrayList package
import java.util.*;
import java.util.stream.*;
public class GFG {
// main method
public static void main(String[] args)
{
// create ArrayList list1
ArrayList<String>
list1 = new ArrayList<String>();
// Add values in ArrayList
list1.add("Hii");
list1.add("Geeks");
list1.add("for");
list1.add("Geeks");
// print list 1
System.out.println("List1: "
+ list1);
// Create ArrayList list2
ArrayList<String>
list2 = new ArrayList<String>();
// Add values in ArrayList
list2.add("Hii");
list2.add("Geeks");
list2.add("Gaurav");
// print list 2
System.out.println("List2: "
+ list2);
// Find common elements
System.out.print("Common elements: ");
System.out.println(list1.stream()
.filter(list2::contains)
.collect(Collectors
.toList()));
}
}
输出:
List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]
- Naive 方法:
- 首先创建两个ArrayList并添加列表的值。
- 创建一个临时ArrayList,包含共同的元素。
- 遍历list1并使用ArrayList.contains()方法检查该元素是否存在于list2中。
- 如果发现,将其添加到列表3中
- 打印list3中的共同元素
下面是上述方法的实现。
// Java Program to find common elements
// in two ArrayLists
// Using Stream filter method
// import ArrayList package
import java.util.ArrayList;
public class GFG {
// main method
public static void main(String[] args)
{
// create ArrayList list1
ArrayList<String>
list1 = new ArrayList<String>();
// Add values in ArrayList
list1.add("Hii");
list1.add("Geeks");
list1.add("for");
list1.add("Geeks");
// print list 1
System.out.println("List1: "
+ list1);
// Create ArrayList list2
ArrayList<String>
list2 = new ArrayList<String>();
// Add values in ArrayList
list2.add("Hii");
list2.add("Geeks");
list2.add("Gaurav");
// print list 2
System.out.println("List2: "
+ list2);
// Create ArrayList list3
ArrayList<String>
list3 = new ArrayList<String>();
// Find common elements
// while iterating through list1
for (String temp : list1) {
// Check if the element is
// present in list2 or not
if (list2.contains(temp)) {
// Since present, add it to list3
list3.add(temp);
}
}
// print common elements from list 3
System.out.println("Common elements: "
+ list3);
}
}
输出:
List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]