C中List怎么轉換成hashset

2023-03-03 16:35:18 字數 2852 閱讀 8254

1樓:匿名使用者

類似的問題被提了很多遍了,你可以從根子上這樣看:

hashset的構造方法之一是hashset(ienumerablecollection),這說明雜湊集可以在構造時通過傳入一個有著*元素型別為t的可列舉的集合*完成初始化。

如1樓所示,list_dd其實本身就繼承有ienumerable介面,所以不要使用linq的cast系列方法,你只需要一行:

hashset_ss=new hashset(_dd);

大多數的集合型別都可以這樣通過構造來初始化。

由於這種轉換是結構上的轉換而非值的轉換,所以絕大多數情況下都需要new一下目標物件,指望list自己提供轉換結構的方法是不靠譜的。

此外要說一句,你說的「地球人都知道」沒有錯,但是它還真的不慢喲。要知道,即使是使用上述構造方法,本質上來說clr也是通過一個一個列舉_dd的元素並新增到_ss去的,兩種方法在**量上有差距,但是執行效率上幾乎相等的。(因為編譯時**會自動優化的)

真的要使用大資料(如含有10萬string的list),請勿使用上述兩種方法(因為都慢),你需要學習parallel系列的並行處理,可以理解為一種能夠利用到所有cpu核心的多執行緒處理。

2樓:匿名使用者

我來滿足你的要求!!

using system.linq;

list_dd = new list();

_dd.add("1");

_dd.add("2");

hashset_ss = new hashset(_dd.cast());

結果你自己除錯看就知道了

如何將list轉換成set

3樓:匿名使用者

list list = new arraylist(set);

set set = new hashset(list);

list to set 最好確保list木有重複資料的

set集合轉化list集合

4樓:當哆啦離開a夢

因為list和set都實現了collection介面,且都實現了addall(collection c)方法,因此可以採用addall()方法將list和set互相轉換;

另外,list和set也提供了collection c作為引數的建構函式,因此通常採用建構函式的形式完成互相轉化。

//list轉set

setset = new hashset<>(list);

system.out.println("set: " + set);

//set轉list

listlist_1 = new arraylist<>(set);

system.out.println("list_1: " + list_1);

5樓:匿名使用者

轉換其實很簡單,set集合裡面的元素是不重複的賺list是比較容易的比如:一個set集合a 要轉換成一個list集合那麼可以這麼寫

list list = new arraylist(a);

這樣就能轉換完成

6樓:匿名使用者

如果你只是要獲取set裡的值,可以用iteratorsetset = new hashset();

set.add(10);

set.add(11);

set.add(14);

set.add(10);

iteratorit = set.iterator();

while (it.hasnext())

如果你是想轉換成list,可以這樣:

listlist = new arraylist(set);

for (int i = 0; i < list.size(); i++)

7樓:烏微月

可以直接取啊

set set=new hashset();

list list=new arraylist();

iterator it=set.iterator();

while(it.hasnext())

c#中怎樣把list轉化成陣列?

8樓:玩轉資料處理

假設你的list放的是字串,那麼你可以這樣轉換

string arry = list.toarray();

9樓:c**

不是有個toarray麼

為什麼需要ienumerable轉成list

10樓:賞蓖蔥

如果你要一個集合,只是元素的型別會有變化,則建議你用list等泛型類,不用自己做。

如果你要附加一些功能,則自己的類從list等繼承。

你也可以從collectionbase繼承,collectionbase幫你儲存item(集合的元素),其他的事自己做,不過從collectionbase繼承會有裝箱拆箱的過程,往往是在不能採用泛型的情況下選用的。

如果你連儲存item也要自定義,則自己的類實現icollection介面,這樣就可以支援foreach了,同時一切功能自己靈活定義。icollection的父介面就是ienumerable。

如果你只想實現ienumerable,那起到什麼作用估計就是你問題的等價答案,這個介面只有一個方法getenumerator,通過它你可以得到一個ienumerator物件,然後呼叫它的movenext,reset等方法調整當前物件,再通過current得到當前物件。

如果僅實現ienumerable,實用意義不大。更推薦實現icollection來做到支援foreach。

怎么在excel中快速把文字轉換成數字

貼上的資料是以文字方式儲存的 雖然也有語法檢查提醒,也可以直接轉換成數字,但是卻只能一次一個轉換 如果資料較多,其實我們可以實現一次全部轉換成數字的 即選擇你所要轉換成數字的區域或者列 再單擊 資料 下的 分列 按鈕 在彈出的對話方塊中直接單擊 完成 按鈕即可,無須任何設定 返回excel正文可以看...

如何把C盤轉換成NTFS

轉換方法 1.點 開始 程式 附件 命令 提示符 這是windows xp內建的一個類似於dos的介面,內部所有的指令語句和dos下的基本相同 2.開啟視窗以後,在游標的提示符下輸入 convert c fs ntfs 然後回車。注意在 covert 的後面有一個空格。3.接著系統會要求你輸入c盤的...

在linu中命令介面轉換成操作介面

輸入命令 runlevel 看看目前的執行等級是幾,估計是3,把執行等級變成5就行了。init 5 linux命令查詢可看 linux命令大全 1.實時切換 1.1 命令列 圖形 startx 或者使用 init 5 1.2 圖形 命令列 ctrl alt f1 f6 2.啟動預設 2.1 啟動進入...