C#数组集合泛型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//我们重写对象的equals方法
Console.WriteLine("----------------4----------------");
al.Add(new Person("myname", 10));
al.Remove(new Person("myname",10));
lists.Add("2");
lists.Add("3");
lists.Add("4");
Console.WriteLine("lists的长度是:"+lists.Count);
Console.WriteLine("lists的容量是:"+lists.Capacity);
foreach (Object item in ht.Keys)//先得到钥匙,也就是姓名,或者年龄等
{
Console.Write(item.ToString()+"对应的锁值:");
Console.WriteLine(ht[item]);
al.Remove(new Person("姓名3",20));//p[2]一样的对象
foreach (object o in al)
{
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
//可以看出,定义的个数,如果超过了个数,容量就是这个数的两倍
((Person)al[3]).sayHello();//取出来的对象是object需要转换
Console.WriteLine("----------------2----------------");
//添加元素时,都是两个object参数,不过第一个是key,第二个是value,就像钥匙和锁
Person p1 = new Person("名称10", 10);
Person p2 = new Person("名称20", 20);
foreach (object o in al)
{
Console.WriteLine(o.ToString());
}
//删除元素
al.RemoveAt(5);
ht.Remove();
foreach (Object item in ht.Keys)
{
Console.Write(item.ToString() + "对应的锁值:");
//添加元素,参数是obj,所以没有指定类型
al.Add(10);
al.Add(12.0);
al.Add("字符串");
al.Add(p[2]);//这样是没有报异常
Console.WriteLine("al的个数是"+al.Count);//结果是4,跟之前定义的不一样,可见集合是可变长度的
//没有对应的钥匙,因为所可以相同,钥匙只有一把
}
Console.WriteLine("------------------7--------------");
//删除keys
ht.Remove(50);
//al.RemoveAt(6);//错误,索引6已经变成了5,删除后,索引会从新排列
al.RemoveRange(4, 2);//删除多个
al.Remove(10);//删除匹配的对象
Console.WriteLine("----------------3----------------");
foreach (object o in al)
{
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
}
//删除person对象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace 数组集合泛型
{
class Program
Console.WriteLine(ht.ContainsValue(p4));
//ht.ContainsValue(p3);
*/
#endregion
Console.WriteLine("-----------------8---------------");
foreach (object o in al)
{
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
}
al.Clear();//清空数组
Person p3 = new Person("名称30", 30);
Person p4 = new Person("名称40", 40);
ht.Add(, p1);
ht.Add(, p2);
{
static void Main(string[] args)
{
#region
/*
//创建一个Person类数组
Person[] p = new Person[3] {new Person("姓名",0),new Person("姓名2",10),new Person("姓名3",20) };
lists.Remove("1");//几个跟arraylist一样的方法
for (int i = 0; i < lists.Count; i++)
ht.Add(, p3);
ht.Add(, p4);
ht.Add(50, 50);
Console.WriteLine("ht的长度"+ht.Count);//没有容量的属性
Console.WriteLine("------------------1--------------------");
//到底容量是多少
Console.WriteLine("al的容量是多少"+al.Capacity);
//虽然Hashtable也解决了一些问题,但是类型没有限制,现在我们可以试下泛型List
List<string> lists = new List<string>(3);//同样设置大小
lists.Add("1");//一样可以使用add添加,但是在智能提示中,类型被固定在你声明的时候了
}
//上面的结果是,一样有姓名3这个对象,看下面的(在后面已经重新了equals方法,所以就只有两个了)
al.Remove(p[2]);
foreach (object o in al)
{
Console.WriteLine("-----------------5---------------");
//如果我们要取出集合的对象,只能通过索引,如果想通过其他,例如姓名,年龄等等,可以使用Hashtable
Hashtable ht = new Hashtable(3);//同样可以指定大小
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
}
//可见remove是删除引用对象时,就根据引用删除,值类型,就是值删除,其实就是根据要删除的对象的equals方法,返回true和false
//p[3] = new Person("", -1);,异常,数组下标超过了,下标从0开始
//创建一个集合,命名空间ctions;
ArrayList al = new ArrayList(3);//也指定大小
Console.WriteLine( ht.Contains(50));//containkey的功能差不多
//ht.Contains();
//ht.Contains();
//也可以看有没有这个值
}
Console.WriteLine("-----------------6---------------");
foreach (object item in ht.Values)//得到锁
{
Console.WriteLine(item.ToString());
al.Add("");
al.Add("");
Console.WriteLine("al的容量是多少" + al.Capacity);
al.Add("");
Console.WriteLine("al的容量是多少" + al.Capacity);
Console.WriteLine(ht[item]);
}
Console.WriteLine("有没有60这个键" + ht[60]);//取值时,没有该键的话,就返回null
//删除时,可以先看看有没有这个键
Console.WriteLine("----------------4----------------");
al.Add(new Person("myname", 10));
al.Remove(new Person("myname",10));
lists.Add("2");
lists.Add("3");
lists.Add("4");
Console.WriteLine("lists的长度是:"+lists.Count);
Console.WriteLine("lists的容量是:"+lists.Capacity);
foreach (Object item in ht.Keys)//先得到钥匙,也就是姓名,或者年龄等
{
Console.Write(item.ToString()+"对应的锁值:");
Console.WriteLine(ht[item]);
al.Remove(new Person("姓名3",20));//p[2]一样的对象
foreach (object o in al)
{
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
//可以看出,定义的个数,如果超过了个数,容量就是这个数的两倍
((Person)al[3]).sayHello();//取出来的对象是object需要转换
Console.WriteLine("----------------2----------------");
//添加元素时,都是两个object参数,不过第一个是key,第二个是value,就像钥匙和锁
Person p1 = new Person("名称10", 10);
Person p2 = new Person("名称20", 20);
foreach (object o in al)
{
Console.WriteLine(o.ToString());
}
//删除元素
al.RemoveAt(5);
ht.Remove();
foreach (Object item in ht.Keys)
{
Console.Write(item.ToString() + "对应的锁值:");
//添加元素,参数是obj,所以没有指定类型
al.Add(10);
al.Add(12.0);
al.Add("字符串");
al.Add(p[2]);//这样是没有报异常
Console.WriteLine("al的个数是"+al.Count);//结果是4,跟之前定义的不一样,可见集合是可变长度的
//没有对应的钥匙,因为所可以相同,钥匙只有一把
}
Console.WriteLine("------------------7--------------");
//删除keys
ht.Remove(50);
//al.RemoveAt(6);//错误,索引6已经变成了5,删除后,索引会从新排列
al.RemoveRange(4, 2);//删除多个
al.Remove(10);//删除匹配的对象
Console.WriteLine("----------------3----------------");
foreach (object o in al)
{
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
}
//删除person对象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace 数组集合泛型
{
class Program
Console.WriteLine(ht.ContainsValue(p4));
//ht.ContainsValue(p3);
*/
#endregion
Console.WriteLine("-----------------8---------------");
foreach (object o in al)
{
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
}
al.Clear();//清空数组
Person p3 = new Person("名称30", 30);
Person p4 = new Person("名称40", 40);
ht.Add(, p1);
ht.Add(, p2);
{
static void Main(string[] args)
{
#region
/*
//创建一个Person类数组
Person[] p = new Person[3] {new Person("姓名",0),new Person("姓名2",10),new Person("姓名3",20) };
lists.Remove("1");//几个跟arraylist一样的方法
for (int i = 0; i < lists.Count; i++)
ht.Add(, p3);
ht.Add(, p4);
ht.Add(50, 50);
Console.WriteLine("ht的长度"+ht.Count);//没有容量的属性
Console.WriteLine("------------------1--------------------");
//到底容量是多少
Console.WriteLine("al的容量是多少"+al.Capacity);
//虽然Hashtable也解决了一些问题,但是类型没有限制,现在我们可以试下泛型List
List<string> lists = new List<string>(3);//同样设置大小
lists.Add("1");//一样可以使用add添加,但是在智能提示中,类型被固定在你声明的时候了
}
//上面的结果是,一样有姓名3这个对象,看下面的(在后面已经重新了equals方法,所以就只有两个了)
al.Remove(p[2]);
foreach (object o in al)
{
Console.WriteLine("-----------------5---------------");
//如果我们要取出集合的对象,只能通过索引,如果想通过其他,例如姓名,年龄等等,可以使用Hashtable
Hashtable ht = new Hashtable(3);//同样可以指定大小
Console.WriteLine(o.ToString());//我们可以重写类的tostring方法
}
//可见remove是删除引用对象时,就根据引用删除,值类型,就是值删除,其实就是根据要删除的对象的equals方法,返回true和false
//p[3] = new Person("", -1);,异常,数组下标超过了,下标从0开始
//创建一个集合,命名空间ctions;
ArrayList al = new ArrayList(3);//也指定大小
Console.WriteLine( ht.Contains(50));//containkey的功能差不多
//ht.Contains();
//ht.Contains();
//也可以看有没有这个值
}
Console.WriteLine("-----------------6---------------");
foreach (object item in ht.Values)//得到锁
{
Console.WriteLine(item.ToString());
al.Add("");
al.Add("");
Console.WriteLine("al的容量是多少" + al.Capacity);
al.Add("");
Console.WriteLine("al的容量是多少" + al.Capacity);
Console.WriteLine(ht[item]);
}
Console.WriteLine("有没有60这个键" + ht[60]);//取值时,没有该键的话,就返回null
//删除时,可以先看看有没有这个键