Java程式查詢兩個陣列的公共元素
我們可以使用Java中的不同方法來查詢兩個陣列之間的公共元素。我們將討論這些方法,包括涉及的基本步驟,並提供實現目標所需的必要程式碼。無論您是Java程式設計初學者還是經驗豐富的程式設計師,本文都將為您提供解決此常見程式設計問題所需的工具和知識。在本文中,我們將學習查詢兩個陣列之間公共元素的不同方法。
兩個陣列之間公共元素的示例
示例1
Input: array1 = {4, 2, 3, 1, 6}
array2 = {6, 7, 9, 8, 4}
Output: Common Elements: {2, 6}
在上面的示例中,由於陣列array1和array2都包含公共元素2和6。因此,上述示例的輸出陣列為{2, 6}。
示例2
Input: array1 = {"Java", "JavaScript", "C", "C++" }
array2 = {"Python", "C#", "Java", "C++" }
Output: Common Elements : {"Java", "C++"}
在上面的示例中,由於陣列array1和array2都包含公共元素“Java”和“C++”。因此,上述示例的輸出陣列為{“Java”, “C++”}。
在本文中,我們將討論使用Java程式查詢兩個陣列之間公共元素的不同方法。
方法1:使用for迴圈
考慮兩個陣列array1和array2並初始化它們。
宣告一個ArrayList來儲存公共元素。
使用for迴圈遍歷第一個陣列,從陣列中取出一個元素,然後使用另一個迴圈遍歷第二個陣列以查詢相同的元素。如果找到相同的元素,則將其儲存在arraylist中並中斷內部迴圈,然後繼續下一個元素。
使用Arraylist列印元素。
示例
在此示例中,我們初始化了兩個各有5個元素的陣列。然後,我們宣告一個Arraylist來儲存公共元素,然後我們使用兩個for迴圈,每個迴圈分別迭代兩個陣列。如果我們使用找到一個commonElement,則我們將該元素新增到arraylist中並新增元素並中斷內部迴圈。最後,我們列印commonElements ArrayList。
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] array1 = {4, 2, 3, 1, 6};
int[] array2 = {6, 7, 9, 8, 4};
List<Integer> commonElements = new ArrayList<>();
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array2.length; j++) {
if (array1[i] == array2[j]) {
commonElements.add(array1[i]);
break;
}
}
}
System.out.println("Common Elements: " + commonElements);
}
}
輸出
Common Elements: [4, 6]
時間複雜度:O(N^2) 輔助空間:O(1)
方法2:使用Array.asList()和retainAll()方法
考慮兩個陣列,並使用Arrays.asList(arrayName)將它們轉換為列表。
使用retainAll()方法保留一個列表中存在於另一個列表中的元素,並列印這些元素。
語法
collection1.retainAll(collection2)
這裡collection1和collection2是兩個集合物件,例如列表、集合、HashSet等。
此方法用於在一個集合中保留另一個集合的所有元素。
示例
在此示例中,我們初始化了兩個陣列,並使用Arrays.asList()方法將它們轉換為ArrayLists。然後,我們使用retainAll()方法查詢兩個陣列之間的公共元素。
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] array1 = {4, 2, 7, 1, 6};
Integer[] array2 = {6, 7, 9, 8, 4};
ArrayList<Integer> list1 = new ArrayList<>(Arrays.asList(array1));
ArrayList<Integer> list2 = new ArrayList<>(Arrays.asList(array2));
list1.retainAll(list2);
System.out.println("Common Elements: " + list1);
}
}
輸出
Common Elements: [4, 7, 6]
時間複雜度:O(N) 輔助空間:O(N)
方法3.使用Hashset和retainAll()方法
初始化兩個陣列並將它們轉換為hashset。
使用retainAll()方法保留一個列表中存在於另一個列表中的元素,並列印這些元素。
示例
在此示例中,我們初始化了兩個陣列,然後使用Arrays.asList()方法和HashSet()建構函式將它們轉換為HashSets。然後,我們使用retainAll()方法查詢兩個陣列之間的公共元素。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Integer[] array1 = {4, 2, 7, 1, 6};
Integer[] array2 = {6, 7, 9, 8, 4};
Set<Integer> set1 = new HashSet<>(Arrays.asList(array1));
Set<Integer> set2 = new HashSet<>(Arrays.asList(array2));
set1.retainAll(set2);
System.out.println("Common Elements: " + set1);
}
}
輸出
Common Elements: [4, 6, 7]
時間複雜度:O(N) 輔助空間:O(N)
方法4:使用流
初始化兩個陣列並將它們轉換為hashset。
將set1轉換為流,並使用filter()方法在set1中查詢set2的元素。
使用collect()方法將元素轉換為集合並列印它們。
語法
set1.stream() .filter(set2::contains) .collect(Collectors.toSet());
這裡set1和set2是兩個包含元素的集合,stream()方法用於將集合轉換為流,然後我們使用filter方法並使用'set2 :: contains'過濾掉兩個集合中通用的元素,然後我們使用collect()方法收集所有通用元素。
此方法中使用的方法
stream() - 此方法用於建立元素流,以便我們可以使用filter()、map()、reduce()等方法來處理資料。
Arrays.stream(collection)
filter() - 此方法用於從流中過濾資料,即根據條件從流中選擇特定元素。它返回布林值。
streamobject.filter(condition)
collect() - 此方法用於將元素流轉換為集合,例如陣列、集合。
streamobject.collect()
示例
在此示例中,我們初始化了兩個陣列,並使用Arrays.asList()方法和HashSet()建構函式將它們轉換為Hash Sets。然後,我們使用stream()方法將set1轉換為流,然後我們使用filter方法並使用'set2 :: contains'過濾掉兩個集合中通用的元素。然後,我們使用collect()方法收集所有通用元素並列印兩個集合中的通用元素。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Integer[] array1 = {4, 2, 7, 1, 6};
Integer[] array2 = {6, 7, 9, 8, 4};
Set<Integer> set1 = new HashSet<>(Arrays.asList(array1));
Set<Integer> set2 = new HashSet<>(Arrays.asList(array2));
Set<Integer> commonelements = set1.stream()
.filter(set2::contains)
.collect(Collectors.toSet());
System.out.println("Common Elements: " + commonelements);
}
}
輸出
Common Elements: [4, 6, 7]
時間複雜度:O(N) 輔助空間:O(N)
因此,在本文中,我們討論了查詢陣列中公共元素的不同方法。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP