java dictionary遍历_C# Dictionary 的几种遍历方法
網上看到的,記錄下來,供參考,備忘
Dictionary list = new Dictionary();
list.Add("d", 1);//3.0以上版本
foreach (var item inlist)
{
Console.WriteLine(item.Key+item.Value);
}//KeyValuePair
foreach (KeyValuePair kv inlist)
{
Console.WriteLine(kv.Key+kv.Value);
}//通過鍵的集合取
foreach (string key inlist.Keys)
{
Console.WriteLine(key+list[key]);
}//直接取值
foreach (int val inlist.Values)
{
Console.WriteLine(val);
}//非要采用for的方法也可
List test = new List(list.Keys);for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(test[i]+list[test[i]]);
}
Dictionary(?TKey?,?TValue?)
表示鍵和值的集合。
Dictionary(?TKey, TValue)?泛型類提供了從一組鍵到一組值的映射。字典中的每個添加項都由一個值及其相關聯的鍵組成。通過鍵來檢索值的速度是非常快的,接近于 O(1),這是因為?Dictionary(?TKey, TValue)?類是作為一個哈希表來實現的。(檢索速度取決于為?TKey?指定的類型的哈希算法的質量。)
只要對象用作?Dictionary(?TKey, TValue)?中的鍵,它就不能以任何影響其哈希值的方式更改。使用字典的相等比較器比較時,Dictionary(?TKey, TValue)?中的任何鍵都必須是唯一的。鍵不能為?null?。?但是如果值類型?TValue?為引用類型,該值則可以為空。
Dictionary(?TKey, TValue)?需要一個相等實現來確定鍵是否相等。可以使用一個接受?comparer?參數的構造函數來指定?IEqualityComparer(?T)?)泛型接口的實現;如果不指定實現,則使用默認的泛型相等比較器?EqualityComparer(?T)?)?.?Default?。如果類型?TKey?實現?System.?IEquatable?)?>?)泛型接口,則默認相等比較器會使用該實現。
Dictionary(?TKey, TValue)?的容量是?Dictionary(?TKey, TValue)?可以包含的元素數。當向?Dictionary(?TKey, TValue)?中添加元素時,將通過重新分配內部數組來根據需要自動增大容量。
對于枚舉而言,字典中的每一項都被視為一個表示值及其鍵的?KeyValuePair(?TKey, TValue)結構進行處理。項返回的順序未定義。
C# 語言的?foreach?語句(在 C++ 中為?for each?,在 Visual Basic 中為?For Each?)需要集合中每個元素的類型。由于?Dictionary(?TKey, TValue)?是鍵和值的集合,因此元素類型并非鍵類型或值類型。相反,元素類型是鍵類型和值類型的?KeyValuePair(?TKey, TValue)。例如:
此類型的公共靜態(在 Visual Basic 中為?Shared?)成員是線程安全的。但不能保證任何實例成員是線程安全的。
只要不修改該集合,Dictionary(?TKey, TValue)?就可以同時支持多個閱讀器。即便如此,從頭到尾對一個集合進行枚舉本質上并不是一個線程安全的過程。當出現枚舉與寫訪問互相爭用這種極少發生的情況時,必須在整個枚舉過程中鎖定集合。若要允許多個線程訪問集合以進行讀寫操作,則必須實現自己的同步。
///summary ///通過DictionaryK,V傳遞參數 summary ///paramname=sql/param ///paramname=parms/param ///returns/returns public static SqlDataReaderExecuteReader( string sql,Dictionary string , string parms) { SqlDataReadersqlReader= null ;
///
///通過Dictionary傳遞參數///
///
///
///
public static SqlDataReader ExecuteReader(string sql, Dictionaryparms)
{
SqlDataReader sqlReader= null;
SqlConnection sqlConn= newSqlConnection(conStr);
SqlCommand sqlCmd= newSqlCommand(sql, sqlConn);foreach (string key inparms.Keys)
{
sqlCmd.Parameters.Add("@" +key, parms[key]);
}
sqlConn.Open();
sqlReader=sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);returnsqlReader;
}
調用如下:=============
public UserRole GetRoleByID(introleId)
{string sql = string.Format("select id roleid,rolename from userrole where id=@ID",roleId);
Dictionary sqlParams = new Dictionary();
sqlParams.Add("ID",roleId.ToString());
UserRole ur=null;using (SqlDataReader sqlReader =DBHelper.ExecuteReader(sql,sqlParams))
{while(sqlReader.Read())
{
ur= new UserRole((int)sqlReader["roleid"], sqlReader["rolename"].ToString());
}
sqlReader.Close();
}returnur;
}
總結
以上是生活随笔為你收集整理的java dictionary遍历_C# Dictionary 的几种遍历方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python阿凡提麦子问题_阿凡提愚弄国
- 下一篇: c# char unsigned_dll