目次
2. ICollection オブジェクトを使用して構築します
1. ArrayListクラスの定義
ArrayList クラスは、Array クラスのアップグレードされたバージョンである高度な動的配列と同等です。
ArrayList クラスは System.Collections 名前空間にあり、要素を動的に追加および削除できます。ArrayList クラスは拡張機能を備えた配列と考えることができますが、配列と同等ではありません。ArrayList クラスを使用して参照を追加します。
System.Collections を使用します。
次に、ArrayList クラスと配列の違い
Array と比較して、ArrayList クラスは開発者に次の機能を提供します。
☑ 配列の容量は固定されていますが、ArrayList の容量は必要に応じて自動的に拡張できます。
☑ ArrayList は、特定の範囲の要素を追加、削除、挿入するためのメソッドを提供しますが、配列では一度に 1 つの要素値のみを取得または設定できます。
☑ ArrayList は、コレクションを返すための読み取り専用の固定サイズのパッケージ化メソッドを提供しますが、配列にはそれがありません。
☑ ArrayList は 1 次元のみですが、配列は多次元にすることができます。
配列の長さは、配列に含めることができる要素の合計数です。配列のランクは、配列内の次元の数です。配列内の次元の下限は、配列内の次元の開始インデックスであり、多次元配列の各次元には異なる制限を設定できます。
3. ArrayListクラスオブジェクトの宣言
ArrayList には 3 つのコンストラクターがあり、これらを介して 3 つの宣言メソッドがあります。
1. デフォルトのコンストラクター
内部配列をデフォルト (16 ビット) サイズで初期化します。
コンストラクターの形式: public ArrayList();
ArrayList の構文形式は、上記のコンストラクターを通じて宣言されます。
ArrayList List=new(); // List : ArrayListオブジェクト名。
ArrayList List=new(); //List:ArrayList对象名
for(i=0;i<10;i++) //给ArrayList类对象添加10个int型元素
{
List.Add(i);
}
2. ICollection オブジェクトを使用して構築します
そして、コレクションの要素を ArrayList に追加します。
コンストラクターの形式: public ArrayList(ICollection);
ArrayList の構文形式は、上記のコンストラクターを通じて宣言されます。
ArrayList リスト=新しい(配列名);
☑ リスト: ArrayList オブジェクト名。
☑arryName: コレクションを追加する配列の名前。
int[]arr=new int[]{1,2,3,4,5,6,7,8,9};
ArrayList List=new(arr);
3. 内部配列を指定されたサイズで初期化します。
コンストラクターの形式: public ArrayList(int);
ArrayList の構文形式は、上記のコンストラクターを通じて宣言されます。
ArrayList リスト=新しい(n);
☑ リスト: ArrayList オブジェクト名。
☑ n: ArrayList オブジェクトの空間サイズ。
ArrayList List=new(10);
for(int i=0;i<List.Count;i++)
{
List.Add(i); //给ArrayList添加10个int型元素
}
4. ArrayList の共通プロパティ
属性 |
説明する |
容量 |
ArrayList に含めることができる要素の数を取得または設定します |
カウント |
ArrayList に実際に含まれる要素の数を取得します。 |
固定サイズ |
ArrayList が固定サイズかどうかを示す値を取得します |
読み取り専用です |
ArrayList が読み取り専用かどうかを示す値を取得します |
同期されています |
ArrayList へのアクセスを同期するかどうかを示す値を取得します |
アイテム |
指定されたインデックスにある要素を取得または設定します |
同期ルート |
ArrayList アクセスの同期に使用できるオブジェクトを取得します |
5. ArrayListの共通メソッド
1. ArrayList 要素の追加
(1) Add()メソッド
Add() メソッドは、ArrayList コレクションの末尾にオブジェクトを追加するために使用され、その構文形式は次のとおりです。
public virtual int Add(オブジェクト値);
☑ 値: ArrayList の最後に追加されるオブジェクト。値は null 参照にすることができます。
☑ 戻り値: ArrayList インデックス、ここに値が追加されました。
ArrayList では、有効な値として null 値が許可され、要素の重複が許可されます。
int arr[] =new int[]{1,2,3,4,5,6};
ArrayList List = new (arr); //使用声明的数组实例化ArrayList对象
List.Add(7); //为ArrayList对象添加元素
(2) ()メソッドの挿入
Insert() メソッドは、ArrayList コレクションの指定されたインデックスに要素を挿入するために使用され、その構文形式は次のとおりです。
public virtual void Insert(int インデックス, オブジェクト値)
☑ インデックス: 値を挿入するゼロから始まるインデックス。
☑ 値: 挿入されるオブジェクト。値は null 参照にすることができます。
ArrayList に格納されている実際の要素数が、ArrayList が格納できる要素数とすでに等しい場合、内部配列を自動的に再割り当てすることで ArrayList の容量が増加し、既存の要素が新しい配列にコピーされます。新しい要素を追加する前に。
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList List = new(arr); //使用声明的数组实例化ArrayList对象
List.Insert(3,7); //在ArrayList对象索引值=3处添加元素7
(3) 総合的な例
//Add()方法和Insert()方法
//分别使用ArrayList对象的Add()方法和Insert()方法向ArrayList集合的结尾处和指定索引处添加元素
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Test7_12
{
class Program
{
static void Main(string[] args)
{
if (args is null) //解除IDE0060
{
throw new ArgumentNullException(nameof(args));
}
int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
ArrayList List = new(arr); //使用声明的一维数组实例化一个ArrayList对象
Console.WriteLine("原ArrayList集合:");
foreach (int i in List) //遍历ArrayList源集合并输出
{
Console.Write(i + " ");
}
Console.WriteLine();
for (int i = 1; i < 5; i++)
{
List.Add(i + arr.Length); //使用Add()方法为ArrayList集合添加元素
}
Console.WriteLine("使用Add方法添加:");
foreach (int i in List) //遍历添加元素后的ArrayList集合并输出
{
Console.Write(i + " ");
}
Console.WriteLine();
List.Insert(6,0); //使用Insert()方法在ArrayList集合的index=6处添加元素0
Console.WriteLine("使用Insert方法添加:");
foreach (int i in List) //遍历最后的ArrayList集合并输出
{
Console.Write(i + " ");
}
Console.WriteLine();
Console.Read();
}
}
}
/*运行结果:
原ArrayList集合:
1 2 3 4 5 6
使用Add方法添加:
1 2 3 4 5 6 7 8 9 10
使用Insert方法添加:
1 2 3 4 5 6 0 7 8 9 10 */
2. ArrayList要素の削除
(1) Clear()メソッド
Clear() メソッドは、ArrayList からすべての要素を削除するために使用されます。その構文形式は次のとおりです。
public virtual void Clear()
//使用 Clear()方法清除ArrayList中的所有元素
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList List = new (arr); //使用声明的数组实例化ArrayList对象
List.Clear(); //在ArrayList对象指定位置添加元素
(2) Remove()メソッド
Remove() メソッドは、最初に出現した特定のオブジェクトを ArrayList から削除するために使用されます。その構文形式は次のとおりです。
public virtual void Remove(Object obj)
obj: ArrayList から削除されるオブジェクト。この値は null 参照にすることができます。
ArrayList 内の要素を削除するときに、指定したオブジェクトが含まれていない場合、ArrayList は変更されないままになります。
//使用RemoveAt()方法从声明的ArrayList对象中移除与3匹配的元素
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList List = new(arr); //使用声明的数组实例化ArrayList对象
List.Remove(3); //删除ArrayList对象指定位置元素
(3) RemoveAt()メソッド
RemoveAt() メソッドは、ArrayList の指定されたインデックスにある要素を削除するために使用され、その構文形式は次のとおりです。
public virtual void RemoveAt(intindex)
Index: 削除する要素の 0 から始まるインデックス。
//使用RemoveAt()方法从声明的ArrayList对象中移除索引为3的元素
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList List = newt(arr); //使用声明的数组实例化ArrayList对象
List.RemoveAt(3); //删除ArrayList对象指定位置元素
(4) RemoveRange()メソッド
RemoveRange() メソッドは、ArrayList から特定の範囲の要素を削除するために使用され、その構文形式は次のとおりです。
public virtual void RemoveRange(int インデックス, int カウント)
☑ インデックス: 削除する要素範囲のゼロから始まる開始インデックス。
☑ count: 削除する要素の数。
RemoveRange() メソッドでは、パラメータ カウントの長さは、配列の全長からパラメータ インデックスの値を引いた値を超えることはできません。
//在ArrayList对象中使用RemoveRange()方法从索引3处删除两个元素
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList List = new (arr); //使用声明的数组实例化ArrayList对象
List.RemoveRange(3,2); //删除ArrayList对象指定位置3处2个元素
(5) 総合的な例
//RemoveRange()
//使用RemoveRange()方法删除ArrayList集合中的一批元素
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Test7_13
{
class Program
{
static void Main(string[] args)
{
if (args is null) //解除IDE0060
{
throw new ArgumentNullException(nameof(args));
}
int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
ArrayList List = new(arr); //使用声明的一维数组实例化一个ArrayList对象
Console.WriteLine("原ArrayList集合:");
foreach (int i in List) //遍历ArrayList集合中的元素并输出
{
/*Console.Write(i+ " ");*/ //可以注释掉.ToString()不影响结果
Console.Write(i.ToString() + " ");
}
Console.WriteLine();
List.RemoveRange(0, 5); //从索引0处开始删除5个元素
Console.WriteLine("删除元素后的ArrayList集合:");
foreach (int i in List) //遍历删除元素后的ArrayList集合并输出其元素
{
Console.Write(i.ToString() + " ");
}
Console.WriteLine();
Console.Read();
}
}
}
/*运行结果:
原ArrayList集合:
1 2 3 4 5 6 7 8 9
删除元素后的ArrayList集合:
6 7 8 9 */
3. ArrayList 要素を検索する
(1) () メソッドを含む
Contains() メソッドは、要素が ArrayList コレクション内にあるかどうかを判断するために使用され、その構文形式は次のとおりです。
public virtual bool Contains(オブジェクト項目)
☑ item: ArrayList 内で検索されるオブジェクト。この値は null 参照にすることができます。
☑ 戻り値: 項目が ArrayList 内に見つかった場合は true、それ以外の場合は false。
//使用 Contains()方法判断数字2是否在ArrayList集合中
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList List = new (arr); //使用声明的数组实例化ArrayList对象
Console.Write(List.Contains(2)); //ArrayList集合中是否包含指定的元素
(2) IndexOf()メソッド
文字または文字列の最初の出現を検索するために使用されます。
IndexOf() メソッドは次の構文で表されます。
public int IndexOf(String value); //语法1
public int IndexOf(char value); //语法2
public int IndexOf(String value, int startIndex); //语法3
public int IndexOf(char value, int startIndex); //语法4
☑ value: 検索する文字または文字列を指定します。
☑startIndex: 検索を開始する位置を指定します。
文字または文字列が最初に出現する位置を 0 からインデックス付けして返します。
//IndexOf()
//查找字符或者字符首次出现的位置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace yxjc123
{
class Program
{
static void Main(string[] args)
{
if (args is null) //解除IDE0060
{
throw new ArgumentNullException(nameof(args));
}
string str = "yxjc123.com repeat yxjc123.com"; //原字符串
Console.WriteLine("查找j:" + str.IndexOf('j')); //查找字符j
Console.WriteLine("查找123:" + str.IndexOf("123")); //查找字符串123
Console.WriteLine("查找j:" + str.IndexOf('j', 10)); //查找字符j,从开始位置10开始
Console.WriteLine("查找123:" + str.IndexOf("123", 10)); //查找字符串123,从开始位置10开始
Console.ReadKey();
}
}
}
/*运行结果:
查找j:2
查找123:4
查找j:22
查找123:24 */
(3) LastIndexOf()メソッド
文字または文字列の最後の出現を検索するために使用されます。
LastIndexOf() メソッドは次の構文で表されます。
public int LastIndexOf(String value); //语法1
public int LastIndexOf(char value); //语法2
public int LastIndexOf(String value, int startIndex); //语法3
public int LastIndexOf(char value, int startIndex); //语法4
☑ value: 検索する文字または文字列を指定します。
☑ startIndex: 検索の開始位置を末尾から数えて指定します。
文字または文字列が最後に出現した位置を返します。
//LastIndexOf()
//用于查找字符或者字符串最后出现的位置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace yxjc123
{
class Program
{
static void Main(string[] args)
{
if (args is null) //解除IDE0060
{
throw new ArgumentNullException(nameof(args));
}
string str = "yxjc123.com repeat yxjc123.com"; //原字符串
Console.WriteLine("查找j:" + str.LastIndexOf('j')); //查找字符j
Console.WriteLine("查找123:" + str.LastIndexOf("123")); //查找字符串123
Console.WriteLine("查找j:" + str.LastIndexOf('j', 10)); //查找字符j,倒数从开始位置10开始
Console.WriteLine("查找123:" + str.LastIndexOf("123", 10)); //查找字符串123,倒数从开始位置10开始
Console.ReadKey();
}
}
}
/*运行结果:
查找j:22
查找123:24
查找j:2
查找123:4 */
4. ArrayList の走査
ArrayList コレクションの走査は配列と同様であり、foreach ステートメントを使用できます。次の例は、ArrayList コレクション内の要素を走査する方法を示しています。
//ArrayList的遍历
//使用foreach语句遍历ArrayList集合中的各个元素并输出
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Test7_14
{
class Program
{
static void Main(string[] args)
{
if (args is null) //解除IDE0060
{
throw new ArgumentNullException(nameof(args));
}
ArrayList list = new() //实例化一个ArrayList对象并赋值
{
"TM",
"C#从入门到精通"
};
foreach (string str in list) //遍历ArrayList集合中的元素并输出
{
Console.WriteLine(str);
}
Console.ReadLine();
}
}
}
/*运行结果:
TM
C#从入门到精通 */