在Java中查找两个 ArrayList 中的共同元素
先决条件: Java中的 ArrayList
给定两个 ArrayList,任务是在Java中打印两个 ArrayList 中的所有公共元素。
例子:
Input: List1 = ["Hii", "Geeks", "for", "Geeks"],
List2 = ["Hii", "Geeks", "Gaurav"]
Output: [Hii, Geeks, Geeks]
Input: List1 = ["a", "b", "c", "d", "e", "f"],
List2 = ["b", "d", "e", "h", "g", "c"]
Output:[b, c, d, e]
- 使用 Collections.retainAll() 方法
句法:
Collections1.retainAll(Collections2) This method keeps only the common elements of both Collection in Collection1.
方法:
- 获取两个 ArrayList。
- 使用 Collection.retainAll() 方法在两个列表中查找公共元素。此方法仅将两个 Collection 的公共元素保留在 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
list1 = new ArrayList (); // 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 list2 = new ArrayList (); // 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
list1 = new ArrayList (); // 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 list2 = new ArrayList (); // 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 list3 = new ArrayList (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]
- 使用流过滤器
句法:
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
list1 = new ArrayList (); // 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 list2 = new ArrayList (); // 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]
- 天真的方法:
- 首先创建两个 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
list1 = new ArrayList (); // 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 list2 = new ArrayList (); // 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 list3 = new ArrayList (); // Find common elements // while iterating through list1 for (String temp : list1) { // Check if theis 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]