ホームページ >バックエンド開発 >C#.Net チュートリアル >C# ジェネリック リスト List
サンプルコードは以下の通りです。
namespace SampleListT
{
class Program
{
static void Main(string[] args)
{
//using System.Collections.Generic List
//using System in名前空間 .Collections; 名前空間の ArrayList
//どちらもリスト コレクションを実装しており、1 つはジェネリック コレクションで、もう 1 つは非ジェネリックです
// 次に、コレクションに person オブジェクトを追加します
person p1 = new person ( "aladdin " , 20 );
person p2 = new person("zhao", 10);
person p3 = new Person("jacky", 40);
//リストのコンテナサイズが指定されていない場合、デフォルトは 0 ですが、要素が追加されると自動的に 4 に拡張されます。5 番目の要素が追加されると 8 になり、9 番目の要素が追加されると 16 になります
//常に指数関数的に増加するため、メモリを再度開くと効率に影響を与えるため、要素の数が事前にわかっている場合は、できるだけ大きなトレードオフ値を指定するのが最善です。可能な限り
//要素を 3 つ追加し、コンテナのサイズを 4 に設定します。 注: 4 つの要素しか配置できないというわけではありません。これを超えると指数関数的に拡張されます。展開によって生じるオーバーヘッド
List
list.Add (p1);
list.Add(p2);
list.Add(p3);
//このメソッドは、余分な未使用のメモリ領域をクリアします。たとえば、割り当てサイズが 100 で、4 つだけを使用する場合、残りを残すのは無駄ではないでしょうか? //このメソッドが呼び出されたときに、要素の数がコンテナ サイズの 90% 以上を占める場合、リサイクルされません。
list.TrimExcess();
// これ以上のデモはありません
// 1 コレクターの初期化
// C# 3.0 以降、初期化関数が提供されていますが、IL では反映されません。
List
// 2 要素を追加する AddRange() このメソッドも ADD に変換されます。オブジェクトのバッチを一度に追加できます
List
//パラメータは更新する必要があるオブジェクト、または配列にすることもできます
list.AddRange( new Person[] { new Person( "aladdin" ,20) , new Person("zhao",6)});
List
// 3 要素を挿入します
// Insert() を使用しますこのメソッドを使用すると、指定した位置に要素を挿入できます
// たとえば、位置 1 に挿入します。その後、最終的にアラジン ジャッキー ジャオになりました。挿入とは、この位置を前と後の位置に配置したことを意味します。彼はすべて 1 つ前に移動されます
mylist.Insert( 1 , new person( "jacky" , 88 ));
{
Console.WriteLine(p.name);
}
// 4 つのアクセス要素
// ArrayList と List
Console.WriteLine( "--------------- 要素へのアクセス---------- ----------- --");
//public delegate void Action
// Day 式を使用していくつかの場所を実装します
Console.WriteLine( "------出力するには ForEach メソッドを使用します--------------- ---------------- ");
// 5 要素の削除
//要素を削除するには、RemoveAt() を使用してインデクサー値を直接渡すことができます
// 最初の要素を直接削除します
mylist.RemoveAt(0);
//削除する要素を Remove メソッドに渡すこともできます
人per2 = 新しい人("zhao", 100);
人per3 = 新しい人("ジャッキー", 100);
lists2.Add(per2);
lists2.Add(per3);
foreach (person per in lists2)
{
Console.WriteLine(per.name);
}
//結果から、Jacky という名前の要素が削除されたことがわかります
// の削除プロセスについて話しましょうRemove メソッド
// IndexOf メソッドを使用してオブジェクトのインデックスを決定し、インデックスによって削除します
// IndexOf メソッドでは、まず要素が IEquatable インターフェイスを実装しているかどうかを確認し、実装されている場合は Equals メソッドを呼び出します。このインターフェース
// 実装されていない場合は、Object の Equals メソッドを呼び出して要素を比較 (つまり、アドレス比較) します
// 上記では per3 を削除しましたが、これは明らかにアドレスであるため、削除されました
//次に Person を変更して IEquatable
// オブジェクトを削除したい場合は、 Remove メソッドは一連のプロセスの後、最後にインデックスによって削除するため、インデックスを使用して直接削除するのが最善です!
//RemoveRange() は範囲を削除します
//最初のパラメータの開始位置
//lists2.RemoveRange(1, 2);
//Console .WriteLine( "一括削除後----------------");
//foreach (person per in lists2)
//{
// Console.WriteLine(per. name);
//}
// 6 検索
// IndexOf を使用して検索することができます。 LastIndexOf FindIndex FindLasIndex FindFindLas 要素が存在するかどうかを確認したいだけの場合は、Exists() メソッドを使用できます
// IndexOf( ) メソッドは、オブジェクトがヒットした場合、そのインデックスを返します。コレクション内の要素が見つからない場合は、-1 を返します。IndexOf は、IEquatable インターフェイスを使用して要素を比較することもできます
List
person1 = new person ("アラジン", 100);
人物 person2 = 新しい人物("zhao", 100);
人物 person3 = 新しい人物("ジャッキー", 100) ;
ls3.Add(person1);
ls3.Add( person2);
ls3.Add(person3);
// デフォルトのアドレス比較を使用するために、一時的に Person インターフェイス
int Index = ls3 を削除します。 IndexOf(person3);
Console.WriteLine( "index of per3 :" + Index); //2
// 検索範囲を 3 番目から指定することもでき、範囲の長さは 1
int Index2 = ls3.IndexOf(person3 ,2,1);
Console. WriteLine(index2);
//IEquatable 比較メソッドは以前に記述されているため、例は示しません
//FindIndex() メソッドは、特定の特性を持つ要素を検索するために使用されます
//例 パラメーターとしてデリゲートを使用する public delegate bool Predicate
intindex3 = ls3.FindIndex(param => param.name.Equals("jacky"));
Console.WriteLine(index3 );/ / 2
// FindLastIndexここには重複する要素がないため、1 つだけを見つけて停止する効果は反映されません。 ("aladdin"));
Console.WriteLine(index4);
//Find メソッドは、要素自体を返す点を除いて、FindIndex メソッドと同じように使用されます
person ppp = ls3.Find( p => p .name.Equals("jacky")) ;
Console.WriteLine(ppp);
//年齢が 100 に等しいすべてのオブジェクト、およびそのうちの 3 つが
List
{
Console.WriteLine(p.name);
}
// 7 Sort
/ / リストは Sort メソッドを使用して並べ替えることができます。実装アルゴリズムはクイック ソートです
// このメソッドにはいくつかのオーバーロードがあります
// このメソッドは、要素に IComparable が実装されている場合にのみ使用できます。実装されている場合は、sort を 1 回直接呼び出すと、順序がソートされます
// public void Sort(Comparison
//public void Sort(IComparer
//public void Sort(int index, int) count, IComparer
人 person6 = 新しい人 ("ジャッキー", 44);
ls4.Add(person4);
ls4.Add(person6) ;
ls4.Sort(MyComparFunc);
foreach ( ls4 の person p)
Console.WriteLine(p.name+ p.age );
}
Console.WriteLine( "----------順序を逆にします---------- --- ----");
foreach(ls4の人p)
Console.WriteLine(p.name+p.age);
}
// 8 タイプ変換
//コレクション内の要素を任意のタイプの要素に変換できます。たとえば、コレクション内の person を Racer オブジェクトに変換したいとします。Racer には名前のみが含まれ、年齢は含まれません。 // public List
// public デリゲート TOutput Converter
Console.WriteLine( "----------変換されたもの--------");
{
Console.WriteLine(r.name);
}
// コレクションが作成された後は、読み取りおよび書き込み可能でなければなりません。新しい要素は追加されましたが、入力が完了したと思われる場合は、何も変更しないでください。
// 読み取り専用コレクションを使用し、AsReadOnly メソッド () を使用して ReadOnlyCollection
ReadOnlyCollection
{
Console.WriteLine(r.name);}
Console.ReadLine();
public static int MyComparFunc(Person p1, Person p2)
{if (p1.age == p2.age)
{
return 0;
}
else if ( p1.age>
}
}
}
C# ジェネリック リスト List