ArrayList 是一種數據結構,它克服了 Java 中常見數組的大小必須事先明確指定的缺點。數組數據結構的長度不能修改,這是由 ArrayList 數據結構處理的。這種數據結構也稱為動態數組,可以根據需要增長或修改。它是Collections框架下的一個類,可以通過導入java.util包來包含在java程序中。
LinkedHashSet 是 Java 中傳統 HashSet 類的增強版本,它提供了 HashSet 中缺少的附加排序函數。它維護元素插入其中的順序,這與 HashSet 的順序是不可預測的不同。它是使用 doubly-linked 列表實現的,並且可以使用迭代器進行迭代。
本文使用 4 種不同的方法處理將 ArrayList 轉換為 LinkedHashSet,如下所示:
- 在 LinkedHashSet 構造函數初始化期間將 ArrayList 作為參數傳遞。
- 使用 LinkedHashSet 類的 addAll() 方法。
- 在遍曆 ArrayList 的所有元素時使用 LinkedHashSet 類的 add() 方法。
- 使用流首先將 ArrayList 轉換為 Set,然後再轉換為 LinkedHashSet。
方法一
使用這種方法,我們隻需在初始化 LinkedHashSet 類時將 ArrayList 作為參數傳遞
用法
LinkedHashSet(Collection C):用於用集合 C 的元素初始化 HashSet。
LinkedHashSet<E> hs = new LinkedHashSet<E>(Collection c);
示例
Java
// java program to convert ArrayList
// to LinkedHashSet
// importing the utils package
import java.util.*;
class GFG {
// defining the method
void arrayListToLinkedHashSet()
{
// initializing the ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// adding values in the ArrayList
arrayList.add("Geeks");
arrayList.add("For");
arrayList.add("Geeks");
// printing the list
System.out.println("The array list:" + arrayList);
// initializing the LinkedHashSet class
// passing the ArrayList as parameter
LinkedHashSet<String> linkedHashSet
= new LinkedHashSet<String>(arrayList);
// printing the LinkedHashSet
System.out.println("The converted "
+ "Linked Hash Set:"
+ linkedHashSet);
}
// Driver Code
public static void main(String[] args)
{
// instantiating the class
GFG ob = new GFG();
// calling the method
ob.arrayListToLinkedHashSet();
}
}
The array list:[Geeks, For, Geeks] The converted Linked Hash Set:[Geeks, For]
說明:
ArrayList 包含三個條目,它們是 [Geeks, For, Geeks]。這被轉換為一個有序集,並且隻包含兩個值:Geeks 和 For。由於 Set 不允許多個相似的值。
方法二
使用這種方法,我們在初始化之後使用 LinkedHashSet 類的預定義方法 addAll() 來填充 LinkedHashSet。
用法:
LinkedHashSet.addAll(Collection C)
參數:參數 C 是要添加到集合中的任何類型的集合。
返回值:如果成功地將集合 C 的元素附加到此 Set,則該方法返回 true,否則返回 False。
示例
Java
// java program to convert ArrayList
// to LinkedHashSet
// importing the java.utils package
import java.util.*;
class GFG {
// defining the method
void arrayListToLinkedHashSet()
{
// initializing the ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// filling the ArrayList with values
arrayList.add("Geeks");
arrayList.add("For");
arrayList.add("Geeks");
// printing the list
System.out.println("The Array List:" + arrayList);
// initializing the LinkedHashSet
LinkedHashSet<String> linkedHashSet
= new LinkedHashSet<>();
// using the addAll() to
// fill the HashSet
linkedHashSet.addAll(arrayList);
// printing the LinkedHashSet
System.out.println("The Linked "
+ "Hash Set:" + linkedHashSet);
}
// Driver Code
public static void main(String[] args)
{
// instantiating the class
GFG ob = new GFG();
// calling the method
ob.arrayListToLinkedHashSet();
}
}
The Array List:[Geeks, For, Geeks] The Linked Hash Set:[Geeks, For]
方法 3
使用這種方法,我們迭代 ArrayList 並在每次迭代中使用 LinkedHashSet 類的預定義 add() 方法用值填充 LinkedHashSet。
用法:
Hash_Set.add(Object element)
參數:參數element 是 LinkedHashSet 類型,指的是要添加到 Set 中的元素。
返回值:如果元素不存在於 LinkedHashSet 中,則該函數返回 True,否則如果元素已存在於 LinkedHashSet 中,則返回 False。
示例
Java
// java program to convert ArrayList
// to LinkedHashSet
// importing the java.utils package
import java.util.*;
class GFG {
// defining the method
void arrayListToHashSet()
{
// initializing the ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// filling the ArrayList with values
arrayList.add("Geeks");
arrayList.add("For");
arrayList.add("Geeks");
// printing the list
System.out.println("The Array List:" + arrayList);
// declaring the iterator
Iterator<String> itr = arrayList.iterator();
// initializing the LinkedHashSet
LinkedHashSet<String> linkedHashSet
= new LinkedHashSet<>();
// loop to iterate through the ArrayList
while (itr.hasNext())
// using the add()
// to fill the HashSet
linkedHashSet.add(itr.next());
// printing the LinkedHashSet
System.out.println("The Linked Hash Set:"
+ linkedHashSet);
}
// Driver Code
public static void main(String[] args)
{
// instantiating the class
GFG ob = new GFG();
// calling the method
ob.arrayListToHashSet();
}
}
The Array List:[Geeks, For, Geeks] The Linked Hash Set:[Geeks, For]
方法 4
在這種方法下,我們首先將 ArrayList 轉換為流,然後再轉換為 Set。這個 Set 最終被轉換為 LinkedHashSet。 Stream 類僅適用於 JDK 8 或更高版本。
示例
Java
// java program to convert ArrayList
// to LinkedHashSet
import java.util.*;
import java.util.stream.*;
class GFG {
// defining the method
void arrayListToLinkedHashSet()
{
// initializing the ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// filling the ArrayList with values
arrayList.add("Geeks");
arrayList.add("For");
arrayList.add("Geeks");
// printing the list
System.out.println("The Array List:" + arrayList);
// creating a stream from the ArrayList
Stream<String> stream = arrayList.stream();
// creating a set from the Stream
// using the predefined toSet()
// method of the Collectors class
Set<String> set
= stream.collect(Collectors.toSet());
// converting the Set to
// LinkedHashSet
LinkedHashSet<String> linkedHashSet
= new LinkedHashSet<>(set);
// printing the LinkedHashSet
System.out.println("The Linked Hash Set:"
+ linkedHashSet);
}
// Driver Code
public static void main(String[] args)
{
// instantiating the class
GFG ob = new GFG();
// calling the method
ob.arrayListToLinkedHashSet();
}
}
The Array List:[Geeks, For, Geeks] The Linked Hash Set:[Geeks, For]
將自定義類對象的 ArrayList 轉換為 LinkedHashSet
以上示例說明了轉換 Integer、String 等原始數據類型的 ArrayList 的過程。在這裏,我們將使用上述方法將自定義類對象的 ArrayList 轉換為 LinkedHashSet。轉換的一個有趣特征是,這允許複製上述場景中不允許的對象。相同的原因是每次創建同一類的新對象時,在比較對象時用於在將元素輸入集合之前檢查元素的 equals() 方法會找到唯一引用,因為每個新對象都有一個新引用.這允許相同的數據出現在 LinkedHashSet 中的多個位置。
示例
Java
// java code to convert an ArrayList
// of custom class objects to
// LinkedHashSet
// importing the libraries
import java.util.*;
// the custom class
class Sports {
// global variable name of type String
// to hold the name of the sport
private String name;
// constructor
public Sports(String name)
{
// initializing the name
this.name = name;
}
// method to return the string
public String returnString()
{
return name + " is a great sport";
}
}
// primary class
class GFG {
// declaring the method
static void arrayListToLinkedHashSet()
{
// creating an array list of type
// class Sports
ArrayList<Sports> listOfSports
= new ArrayList<Sports>();
// adding the new instances of Sports
// in the array list
listOfSports.add(new Sports("Football"));
listOfSports.add(new Sports("Basketball"));
listOfSports.add(new Sports("Football"));
// printing the list
System.out.println("The Array List:"
+ listOfSports);
// declaring an iterator of type Sports
// to iterate over the list
Iterator<Sports> itr = listOfSports.iterator();
// iterating over the list
while (itr.hasNext())
// printing the contents
// by calling the returnString()
System.out.println(itr.next().returnString());
// initializing the linkedhashset
// of type Sports
LinkedHashSet<Sports> linkedHashSet
= new LinkedHashSet<Sports>(listOfSports);
// printing the contents of the
// linked hash set
System.out.println("The Linked Hash Set:"
+ linkedHashSet);
// declaring an iterator to iterate
// over linkedhashset
Iterator<Sports> itr1 = linkedHashSet.iterator();
// iterating over the linkedhashset
while (itr1.hasNext()) {
// calling the returnString()
// of Sports
System.out.println(itr1.next().returnString());
}
}
// Driver Code
public static void main(String[] args)
{
// calling the method
arrayListToLinkedHashSet();
}
}
The Array List:[Sports@4e50df2e, Sports@1d81eb93, Sports@7291c18f] Football is a great sport Basketball is a great sport Football is a great sport The Linked Hash Set:[Sports@4e50df2e, Sports@1d81eb93, Sports@7291c18f] Football is a great sport Basketball is a great sport Football is a great sport
說明:
在第一行,打印了 ArrayList 的內容,可以看出是對 Sports 類的引用。在下麵的三行中,打印了 Sports 類的 returnString() 方法的內容。應該注意的是,所有引用都是唯一的,因此即使內容可能相同,LinkedHashSet 也允許它們。在下一行中,打印出 LinkedHashSet 的內容,這些內容再次引用了 Sports 類。後麵的行是 returnString() 方法調用。
相關用法
- Java Array轉LinkedHashSet用法及代碼示例
- Java LinkedList和LinkedHashSet的區別用法及代碼示例
- Java LinkedHashSet clear()用法及代碼示例
- Java LinkedHashSet removeAll()用法及代碼示例
- Java LinkedHashSet toArray(T[])用法及代碼示例
- Java LinkedHashSet toArray()用法及代碼示例
- Java LinkedHashSet equals()用法及代碼示例
- Java LinkedHashSet retainAll()用法及代碼示例
- Java LinkedHashSet toString()用法及代碼示例
- Java LinkedHashSet containsAll()用法及代碼示例
- Java LinkedHashSet hashCode()用法及代碼示例
- Java LinkedHashSet add()用法及代碼示例
- Java LinkedHashSet contains()用法及代碼示例
- Java LinkedHashSet remove()用法及代碼示例
- Java LinkedHashSet size()用法及代碼示例
- Java LinkedHashSet isEmpty()用法及代碼示例
注:本文由純淨天空篩選整理自ag01harshit大神的英文原創作品 How to Convert ArrayList to LinkedHashSet in Java?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。