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
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 啟動進入...