java集合list方法吗_关于集合:将List转换为Java集合的最简单方法
在Java中,將EDCOX1的0度轉換為EDCOX1×1的最簡單的方法是什么?
Set foo = new HashSet(myList);
@阿什什:這與這個問題完全無關。沒有人問如何將空值轉換為集合。人們總是需要處理NULL是Java(文化)被破壞的標志。幾乎總是,空是一個錯誤。拋出一個異常實際上是你能做的最好的。尤其是當它是對集合的空引用時:您能想象到空引用對集合的語義意義多久一次,并且這種意義不同于空集合?
同意,您應該(幾乎)始終傳遞:bean的不可變靜態空實例,或者集合的collections.emptyxx(),而不是空實例。如果代碼在每個方法開始時都沒有被空檢查污染,那么它還會使代碼更容易讀取。
嗨,伙計們,你們能推薦一篇關于這個NLP和其他異常處理的好文章或其他參考資料嗎?
雖然正確,但該答案缺乏足夠的技術背景,無法保證是最佳/公認的答案,因為這里存在著一些陷阱,這取決于Set和Map的實現方式;此處假定為HashSet。
我同意SEPP2K,但還有其他一些可能重要的細節:
new HashSet(myList);
將給您一個沒有排序的集合,該集合沒有重復項。在本例中,重復是使用對象上的.equals()方法標識的。這是結合.hashcode()方法完成的。(更多關于平等的信息,請看這里)
提供排序集的另一種方法是:
new TreeSet(myList);
如果foo實現了可比性,這是可行的。如果沒有,那么您可能需要使用比較器:
Set lSet = new TreeSet(someComparator);
lSet.addAll(myList);
這取決于compareTo()(來自可比較接口)或compare()(來自comparator)以確保唯一性。因此,如果您只關心唯一性,那么就使用哈希集。如果您正在排序,那么考慮樹集。(記住:以后再優化!)如果時間效率很重要,請使用哈希集如果空間效率很重要,請查看treeset。請注意,通過trove(和其他位置)可以更有效地實現集合和映射。
感謝您提供定制的比較器用例!
如果您使用了番石榴圖書館:
Set set = Sets.newHashSet(list);
或者,更好:
Set set = ImmutableSet.copyOf(list);
+1用于使用不可變集
為什么不可變的et.copyof更好?
Guava的NeWHASSSET()在基本的Java新HASSET()上有什么優勢?
@nelda.techspiress javadoc討論了應該或不應該使用該方法的時間。注意最后一部分:這個方法不是很有用,將來可能會被棄用。盡管我有點驚訝,但一致性并沒有被提到作為一個因素,比如說,它與ImmutableSet.of()的一致性。編輯:它可能不是因子,因為所有重載都是不需要的。
嘿,謝謝你的參考@shmosel,但我在尋找更多的經驗知識。對于使用過番石榴的人,為什么要選擇番石榴而不是哈希集?
使用Java 8可以使用流:
List mylist = Arrays.asList(100, 101, 102);
Set myset = mylist.stream().collect(Collectors.toSet()));
你查過這方面的罰款嗎?這將執行一個iterable+迭代器,一個新的hashset(),然后對于每個列表項,對新的集合進行addall()調用。總體而言,CCA。為新哈希集(列表)這樣簡單的東西創建了5個對象。
Set alphaSet ?= new HashSet();
或者完整的例子
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ListToSet
{
public static void main(String[] args)
{
List alphaList = new ArrayList();
alphaList.add("A");
alphaList.add("B");
alphaList.add("C");
alphaList.add("A");
alphaList.add("B");
System.out.println("List values .....");
for (String alpha : alphaList)
{
System.out.println(alpha);
}
Set alphaSet = new HashSet(alphaList);
System.out.println("
Set values .....");
for (String alpha : alphaSet)
{
System.out.println(alpha);
}
}
}
+1表示完整的代碼示例。這里還需要注意的一點是,從一次運行到另一次運行,散列并不能保證是相同的。這意味著在"set values…"之后打印的列表可能是"abc"一次運行,而"cba"另一次運行。正如我在回答中提到的,您可以使用樹集來獲得穩定的順序。另一種選擇是使用Linkedhashset,它記住添加項目的順序。
我將在轉換為set之前執行空檢查。
if(myList != null){
Set foo = new HashSet(myList);
}
或Setfoo = myList == null ? Collections.emptySet() : new HashSet(myList);。
對于Java 8來說非常簡單:
List < UserEntity > vList= new ArrayList<>();
vList= service(...);
Set vSet= vList.stream().collect(Collectors.toSet());
"實際"Java 8將使用EDCOX1×5;
感謝您的評論,您是對的:)
您可以將List<>轉換為Set<>。
Set set=new HashSet();
//Added dependency -> If list is null then it will throw NullPointerExcetion.
Set set;
if(list != null){
set = new HashSet(list);
}
我想你的意思是把它從一張單子放到另一張單子上。
讓我們不要忘記我們相對較新的朋友java-8流API。如果在將列表轉換為集合之前需要對其進行預處理,則最好具有以下內容:
list.stream()..collect(Collectors.toSet());
爪哇-阿達爾
set.addAll(aList);
新對象
new HashSet(list)
JAVA-8
list.stream().collect(Collectors.toSet());
使用古瓦
Sets.newHashSet(list)
阿帕奇公地
CollectionUtils.addAll(targetSet, sourceList);
使用Java 10,您現在可以使用EDCOX1(8)來輕松地將EDCOX1的9度轉換為不可修改的EDOCX1 10。
例子:
var set = Set.copyOf(list);
記住,這是一個無序操作,不允許使用null元素,因為它會拋出NullPointerException。
如果您希望它是可修改的,那么只需將它傳遞給構造函數一個Set實現。
有多種方法可以得到一個Set,如下所示:
List sourceList = new ArrayList();
sourceList.add(1);
sourceList.add(2);
sourceList.add(3);
sourceList.add(4);
// Using Core Java
Set set1 = new HashSet<>(sourceList); ?//needs null-check if sourceList can be null.
// Java 8
Set set2 = sourceList.stream().collect(Collectors.toSet());
Set set3 = sourceList.stream().collect(Collectors.toCollection(HashSet::new));
//Guava
Set set4 = Sets.newHashSet(sourceList);
// Apache commons
Set set5 = new HashSet<>(4);
CollectionUtils.addAll(set5, sourceList);
當我們使用Collectors.toSet()時,它返回一個集合,并根據文件:There are no guarantees on the type, mutability, serializability, or thread-safety of the Set returned返回。如果我們想得到一個HashSet,那么我們可以使用另一個選項來獲得一個集合(檢查set3)。
使用構造函數的最佳方法
Set s= new HashSet(list);
在Java 8中,還可以使用流API:
Set s= list.stream().collect(Collectors.toSet());
一個具有EDCOX1和7的Java 8彈性解決方案
Set mySet = Optional.ofNullable(myList).map(HashSet::new).orElse(null);
總結
以上是生活随笔為你收集整理的java集合list方法吗_关于集合:将List转换为Java集合的最简单方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 浮点运算单元(FPU)是什么?
- 下一篇: 迷阵突围 (dijkstra求次短路)邻
