Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
用Java在List和Set之間轉換
1.概述
在這篇簡短的文章中,我們將看一下**列表和集合之間的轉換**-從普通Java開始,使用Guava和Apache Commons Collections庫,最後從Java 10開始。
本文是Baeldung上的“ Java – Back to Basic”系列的一部分。
進一步閱讀:
如何使用Java在列表中查找元素
看一下在Java中查找列表中元素的一些快速方法
閱讀更多→
在Java中改組集合
了解如何使用Java整理各種集合。
閱讀更多→
檢查Java中兩個列表是否相等
一篇簡短的文章重點討論測試兩個List實例是否包含完全相同順序的相同元素的常見問題。
閱讀更多→
2.將列表轉換為集合
2.1。使用純Java
讓我們開始使用Java將**列表從列表轉換為集合**:
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
Set<Integer> targetSet = new HashSet<>(sourceList);
}
如您所見,轉換過程是類型安全且簡單的-因為每個集合的構造函數都會接受另一個集合作為源。
2.2。瓦特i個番石榴
讓我們使用番石榴做同樣的轉換:
public void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set<Integer> targetSet = Sets.newHashSet(sourceList);
}
2.3。使用Apache Commons Collections
接下來,讓我們使用Commons Collections API在List和Set之間進行轉換:
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set<Integer> targetSet = new HashSet<>(6);
CollectionUtils.addAll(targetSet, sourceList);
}
2.4。使用Java 10
另一種選擇是使用Java 10中引入的Set.copyOf靜態工廠方法:
public void givenUsingJava10_whenListConvertedToSet_thenCorrect() {
List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set targetSet = Set.copyOf(sourceList);
}
請注意,以這種方式創建的Set是不可修改的。
3.將集轉換為列表
3.1。使用純Java
現在,使用Java進行從Set到List的反向轉換:
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = new ArrayList<>(sourceSet);
}
3.2。用番石榴
和番石榴解決方案:
public void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = Lists.newArrayList(sourceSet);
}
與Java方法非常相似,只是重複代碼少了一點。
3.3。使用Apache Commons Collections
現在讓我們看一下在集合和列表之間轉換的Commons Collections解決方案:
public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = new ArrayList<>(6);
CollectionUtils.addAll(targetList, sourceSet);
}
3.4。使用Java 10
最後,我們可以使用Java 10中引入的List.copyOf :
public void givenUsingJava10_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = List.copyOf(sourceSet);
}
我們需要記住,結果列表是不可修改的。
4。結論
所有這些示例和代碼段的實現都**可以在GitHub上找到**-這是一個基於Maven的項目,因此應該很容易直接導入和運行。