集合的遍历和扩容原理

 一.泛型集合

双列泛型的三种遍历:

Dictionary<string,Student> dic=new Dictionary<string,Student>();
dic.add("张三",stu1);
dic.add("李四",stu2);

 (1)

foreach(string item in dic.Keys)
{
Student stu=dic[item];
}

    (2)

foreach(Student item in dic.Values)
{
     Console.WriteLine(item);
}

    (3)

foreach(KeyValuePair<string,Student> item in dic)
{
//item=key+Value
item.Key
item.Value
}

//数据绑定 List<UserInfo> list ----单列绑定
dgvList.DataSource=new BindingList<UserInfo>(list);
--------------------------------------------------------------

双列绑定
Dictionary<string,Student> dic=new Dictionary<string,Student>();
BindingSource bs=new BindingSource();
bs.DataSource=dic.Values;
dgvList.DataSource=bs;

二.集合的扩容原理

当调用Add()方法时,先判断集合中元素的个数和保存元素的个数的数组长度是否一致,再决定是否扩容

如果数组长度小于需要长度就扩容,

如果数组长度不等于0就将数组的长度*2

***注:扩容的上限为0x7fefffff约21亿

再调用Capacity的set方法利用数组间的copy方法(新数组的长度是旧数组的二倍)给数组扩容

三.方法重载可变参数

C#      可变的
public void say(params object[] objs)
{

}
public static int ExecuteNonQuery(string cmdTxt, params SqlParameter[] parames)
{
return ExecuteNonQuery(cmdTxt, CommandType.Text, parames);
}

JAVA

public ResultSet executeQuery(String sql,Object... objs) throws Exception{
    con=getConnection();
    ps = con.prepareStatement(sql);
    for (int i = 0; i < objs.length; i++) {
    ps.setObject(i+1, objs[i]);
       }
       rs= ps.executeQuery();
       return rs;
}

四.对象间的交互.

 UML(Uniform Model Language)统一建模语言:

 StarUML:

  类图

用例图

序列图/时序图

原文地址:https://www.cnblogs.com/wy0119/p/7016920.html