Unity基礎(chǔ)——List的用法

一晰赞、List的方法和屬性

Capacity: 用于獲取或設(shè)置List可容納元素的數(shù)量稼病。當(dāng)數(shù)量超過容量時,這個值會自動增長掖鱼。您可以設(shè)置這個值以減少容量然走,也可以調(diào)用trin()方法來減少容量以適合實(shí)際的元素?cái)?shù)目∠返玻  
Count: 屬性芍瑞,用于獲取數(shù)組中當(dāng)前元素?cái)?shù)量  
Item(): 通過指定索引獲取或設(shè)置元素。對于List類來說褐墅,它是一個索引器拆檬。  
Add(): 在List中添加一個對象的公有方法  AddRange( ) 公有方法妥凳,在List尾部添加實(shí)現(xiàn)了ICollection接口的多個元素  
BinarySearch(): 重載的公有方法竟贯,用于在排序的List內(nèi)使用二分查找來定位指定元素.  
Clear(): 在List內(nèi)移除所有元素  
Contains(): 測試一個元素是否在List內(nèi)  
CopyTo(): 重載的公有方法,把一個List拷貝到一維數(shù)組內(nèi)  
Exists(): 測試一個元素是否在List內(nèi)  
Find(): 查找并返回List內(nèi)的出現(xiàn)的第一個匹配元素 
FindAll(): 查找并返回List內(nèi)的所有匹配元素  
GetEnumerator(): 重載的公有方法逝钥,返回一個用于迭代List的枚舉器
Getrange(): 拷貝指定范圍的元素到新的List內(nèi)
IndexOf(): 重載的公有方法屑那,查找并返回每一個匹配元素的索引
Insert(): 在List內(nèi)插入一個元素
InsertRange(): 在List內(nèi)插入一組元素
LastIndexOf(): 重載的公有方法,查找并返回最后一個匹配元素的索引
Remove(): 移除與指定元素匹配的第一個元素
RemoveAt(): 移除指定索引的元素
RemoveRange(): 移除指定范圍的元素
Reverse(): 反轉(zhuǎn)List內(nèi)元素的順序
Sort(): 對List內(nèi)的元素進(jìn)行排序
ToArray(): 把List內(nèi)的元素拷貝到一個新的數(shù)組內(nèi) 
trimToSize(): 將容量設(shè)置為List中元素的實(shí)際數(shù)目

二、List的用法

1持际、List的基礎(chǔ)沃琅、常用方法:

(1)、聲明:

List<T> mList = new List<T>();
①选酗、T為列表中元素類型阵难,現(xiàn)在以string類型作為例子。

List<string> mList = new List<string>();

**List<T> testList =new List<T> (IEnumerable<T> collection);**

②芒填、以一個集合作為參數(shù)創(chuàng)建List:

string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };
List<string> testList = new List<string>(temArr);
(2)呜叫、添加元素:

①、 添加一個元素

語法: List. Add(T item)

List<string> mList = new List<string>();
mList.Add("John");

②殿衰、 添加一組元素  
語法: List. AddRange(IEnumerable<T> collection)

List<string> mList = new List<string>();
string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku",  "Locu" };
mList.AddRange(temArr);

③朱庆、在index位置添加一個元素  
語法: Insert(int index, T item);

List<string> mList = new List<string>();
mList.Insert(1, "Hei");

④、遍歷List中元素語法:

foreach (T element in mList)  //T的類型與mList聲明時一樣
{
    Console.WriteLine(element);
}

例:

List<string> mList = new List<string>();
...//省略部分代碼
foreach (string s in mList)
{
    Console.WriteLine(s);
}
(3)闷祥、刪除元素:

①娱颊、刪除一個值  
語法:List. Remove(T item)

mList.Remove("Hunter");

②、 刪除下標(biāo)為index的元素  
語法:List. RemoveAt(int index);

mList.RemoveAt(0);

③凯砍、 從下標(biāo)index開始箱硕,刪除count個元素  
語法:List. RemoveRange(int index, int count);

mList.RemoveRange(3, 2);

(4)、判斷某個元素是否在該List中:

語法:List. Contains(T item) 返回值為:true/false

if (mList.Contains("Hunter"))
{
    Console.WriteLine("There is Hunter in the list");
}
else
{
    mList.Add("Hunter");
    Console.WriteLine("Add Hunter successfully.");
}
(5)悟衩、給List里面元素排序:

語法: List. Sort () 默認(rèn)是元素第一個字母按升序

mList.Sort();
(6)剧罩、給List里面元素順序反轉(zhuǎn):

語法: List. Reverse () 可以與List. Sort ()配合使用,達(dá)到想要的效果

mList. Reverse();
(7)座泳、List清空:

語法:List. Clear ()

mList.Clear();
(8)惠昔、獲得List中元素?cái)?shù)目:

語法: List. Count () 返回int值

int count = mList.Count();
Console.WriteLine("The num of elements in the list: " +count);

2、List的進(jìn)階挑势、強(qiáng)大方法:本段舉例用的List:

string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", " "Locu" };
mList.AddRange(temArr);
(1)镇防、List.FindAll方法:檢索與指定謂詞所定義的條件相匹配的所有元素

語法:public List<T> FindAll(Predicate<T> match);

List<string> subList = mList.FindAll(ListFind); //委托給ListFind函數(shù)foreach (string s in subList)
{
    Console.WriteLine("element in subList: "+s);
}

這時subList存儲的就是所有長度大于3的元素。

(2)潮饱、List.Find 方法:搜索與指定謂詞所定義的條件相匹配的元素来氧,并返回整個 List 中的第一個匹配元素。

語法:public T Find(Predicate<T> match)
Predicate是對方法的委托香拉,如果傳遞給它的對象與委托中定義的條件匹配饲漾,則該方法返回 true。當(dāng)前 List 的元素被逐個傳遞給Predicate委托缕溉,并在 List 中向前移動考传,從第一個元素開始,到最后一個元素結(jié)束证鸥。當(dāng)找到匹配項(xiàng)時處理即停止僚楞。Predicate 可以委托給一個函數(shù)或者一個拉姆達(dá)表達(dá)式:
委托給拉姆達(dá)表達(dá)式:

    string listFind = mList.Find(name =>  //name是變量勤晚,代表的是mList中元素,自己設(shè)定
    {     
       if (name.Length > 3)
       {
          return true;
       }
      return false;
    });
    Console.WriteLine(listFind);     //輸出是Hunter

委托給一個函數(shù):

string listFind1 = mList.Find(ListFind);  //委托給ListFind函數(shù)
Console.WriteLine(listFind);    //輸出是Hunter

//ListFind函數(shù)
public bool ListFind(string name)
{
    if (name.Length > 3)
    {
        return true;
    }
    return false;
}

這兩種方法的結(jié)果是一樣的泉褐。

(3)赐写、List.FindLast 方法:搜索與指定謂詞所定義的條件相匹配的元素,并返回整個 List 中的最后一個匹配元素膜赃。

語法:public T FindLast(Predicate<T> match);
用法與List.Find相同挺邀。

(4)、List.TrueForAll方法: 確定是否 List 中的每個元素都與指定的謂詞所定義的條件相匹配跳座。

語法:public bool TrueForAll(Predicate<T> match);
委托給拉姆達(dá)表達(dá)式:

bool flag = mList.TrueForAll(name =>
{
    if (name.Length > 3)
    {
     return true;
    }
    else
    {
     return false;
    }
});
Console.WriteLine("True for all:  "+flag);  //flag值為

委托給一個函數(shù)端铛,這里用到上面的ListFind函數(shù):

bool flag = mList.TrueForAll(ListFind);    //委托給ListFind函數(shù)
Console.WriteLine("True for all:  "+flag);  //flag值為false

這兩種方法的結(jié)果是一樣的。

(5)List.Take(n)方法:獲得前n行疲眷,返回值為IEnumetable<T>禾蚕,T的類型與List<T>的類型一樣
IEnumerable<string> takeList=  mList.Take(5);
foreach (string s in takeList)
{
      Console.WriteLine("element in takeList: " + s);
}

這時takeList存放的元素就是mList中的前5個。

(6)狂丝、List.Where方法:檢索與指定謂詞所定義的條件相匹配的所有元素换淆。跟List.FindAll方法類似。
IEnumerable<string> whereList = mList.Where(name =>
{
     if (name.Length > 3)
     {
        return true;
     }
     else
     {
        return false;
     }
 }
 
 foreach (string s in subList)
 {
    Console.WriteLine("element in subList")
 }

這時subList存儲的就是所有長度大于3的元素几颜。

(7)倍试、List.RemoveAll方法:移除與指定的謂詞所定義的條件相匹配的所有元素。

語法: public int RemoveAll(Predicate<T> match);

mList.RemoveAll(name =>
{
     if (name.Length > 3)
    {
        return true;
    }
    else
    {
        return false;
    }
});

foreach (string s in mList)
{
    Console.WriteLine("element in mList:" + s);
}

這時mList存儲的就是移除長度大于3之后的元素蛋哭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末县习,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子具壮,更是在濱河造成了極大的恐慌准颓,老刑警劉巖哈蝇,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棺妓,死亡現(xiàn)場離奇詭異,居然都是意外死亡炮赦,警方通過查閱死者的電腦和手機(jī)怜跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吠勘,“玉大人性芬,你說我怎么就攤上這事【绶溃” “怎么了植锉?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長峭拘。 經(jīng)常有香客問我俊庇,道長狮暑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任辉饱,我火速辦了婚禮搬男,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彭沼。我一直安慰自己缔逛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布姓惑。 她就那樣靜靜地躺著褐奴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挺益。 梳的紋絲不亂的頭發(fā)上歉糜,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音望众,去河邊找鬼匪补。 笑死,一個胖子當(dāng)著我的面吹牛烂翰,可吹牛的內(nèi)容都是我干的夯缺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甘耿,長吁一口氣:“原來是場噩夢啊……” “哼踊兜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起佳恬,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捏境,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后毁葱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垫言,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年倾剿,在試婚紗的時候發(fā)現(xiàn)自己被綠了筷频。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡前痘,死狀恐怖凛捏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芹缔,我是刑警寧澤坯癣,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站最欠,受9級特大地震影響示罗,放射性物質(zhì)發(fā)生泄漏蓬网。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一鹉勒、第九天 我趴在偏房一處隱蔽的房頂上張望帆锋。 院中可真熱鬧,春花似錦禽额、人聲如沸锯厢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实辑。三九已至,卻和暖如春藻丢,著一層夾襖步出監(jiān)牢的瞬間剪撬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工悠反, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留残黑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓斋否,卻偏偏與公主長得像梨水,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茵臭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355