表示键/值对的集合,这些键和值按键排序并可按照键和索引访问。

SortedList最合适对一列健/值对 进行排序,在排序时,是对键进行排序,SortedList 是 Hashtable 和 Array 的混合。当使用 Item 索引器属性按照元素的键访问元素时,其行为类似于 Hashtable。当使用 GetByIndex 或 SetByIndex 按照元素的索引访问元素时,其行为类似于 Array。

SortedList 在内部维护两个数组以将数组存储到列表中;即,一个数组用于键,另一个数组用于相关联的值。每个元素都是一个可作为 DictionaryEntry 对象进行访问的键/值对。键不能为空引用(Visual Basic 中为 Nothing),但值可以。SortedList 的容量是列表可拥有的元素数。随着向 SortedList 中添加元素,容量通过重新分配按需自动增加。可通过调用 TrimToSize 或通过显式设置 Capacity 属性减少容量。SortedList 的元素将按照特定的 IComparer 实现(在创建SortedList 时指定)或按照键本身提供的 IComparable 实现并依据键来进行排序。不论在哪种情况下,SortedList 都不允许重复键。

索引顺序基于排序顺序。当添加元素时,元素将按正确的排序顺序插入 SortedList,同时索引会相应地进行调整。若移除了元素,索引也会相应地进行调整。因此,当在SortedList 中添加或移除元素时,特定键/值对的索引可能会更改。

由于要进行排序,所以在 SortedList 上操作比在 Hashtable 上操作要慢。但是,SortedList 允许通过相关联键或通过索引对值进行访问,可提供更大的灵活性。

一。添加删除

1。public virtual void Add(object key,object value);

此集合中的索引从零开始。

将带有指定键和值的元素添加到 SortedList。

通过设置 SortedList 中不存在的键的值,Item 属性也可用于添加新元素。例如:myCollection["myNonexistentKey"] = myValue。但是,如果指定的键已经存在于 SortedList 中,则设置 Item 属性将改写旧值。相比之下,Add 方法不修改现有元素。

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
//结果为d c b a,所以可知是按键排序,而非值排序

DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();

2。public virtual void Remove(object key);

从 SortedList 中移除带有指定键的元素
如果 SortedList 不包含带有指定键的元素,则 SortedList 保持不变。不引发异常

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
//sList.Remove("b");  错误,是按key删除,而非Value
sList.Remove(3);  //删除了[3,"b"]
DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();

3。public virtual void RemoveAt(int index);

移除 SortedList 的指定索引处的元素。

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.RemoveAt(3); //删除的是[4,"a"],这里的参数是索引号,而非键值,
//与sList.Remove(3)不同;  sList.Remove(3)删除了[3,"b"]

DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();

4。public virtual void Clear();

从 SortedList 中移除所有元素Count 设置为零。Capacity 保持不变。若要重置 SortedList 的容量,请调用 TrimToSize或直接设置 Capacity 属性。截去空 SortedList 会将 SortedList 的容量设置为默认容量,而不是零

二。与索引有关的操作

1。public virtual void SetByIndex(int index,object value);

替换 SortedList 中指定索引处的值。

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.SetByIndex(1,"dddddd");  //1为索引,如果Count<2,则出错,也就是说必须存在

//而sList[2] = "dddddd";不存在这种现象,

//也就是说sList[2] = "dddddd"是

//如果键存在在修改值,不存在则添加

DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();

2。public virtual object GetByIndex(int index);

获取 SortedList 的指定索引处的值。index必须小于Count,否则出错

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
//sList.Clear();
int nIndex = 2;
if (nIndex<sList.Count)
 {
   Label3.Text = sList.GetByIndex(nIndex).ToString();
 }
else
 {
  Label3.Text = "nIndex>=Count";
 }

3.public virtual int IndexOfKey(object key);

返回 SortedList 中指定键的从索引,这是Hashtable所没有的,因为Hashtable没有有序这个概念,它的排序是内部的

4.public virtual int IndexOfValue(object value);

返回指定的值在 SortedList 中第一个匹配项的索引,这是Hashtable所没有的,因为Hashtable没有有序这个概念,它的排序是内部的

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.Add(5,"d");
int nIndex = 0;
nIndex = sList.IndexOfKey(1);  //为0
nIndex = sList.IndexOfValue("d"); //值匹配的有两个,这时返回第一个匹配的,所以为0

三。其他

1.public virtual object GetKey(int index);

获取 SortedList 的指定索引处的键,这也是Hashtable所不可能有的

2.public virtual IList GetKeyList();

获取 SortedList 中的键

SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.Add(5,"d");
Label3.Text = "";
IList iList = sList.GetKeyList();
for (int i=0; i<sList.Count; i++)
{
 Label3.Text += iList[i].ToString();
 Label3.Text += "  ";
}

注:IList 接口,表示可按照索引单独访问的一组对象,其中有一个Item属性,在C#也就就是索引器

3.public virtual IList GetValueList();

获取 SortedList 中的值

4.public virtual bool Contains(object key);

确定 SortedList 是否包含特定键

5.public virtual bool ContainsKey(object key);

确定 SortedList 是否包含特定键,与Contains(object key);完全同

6.public virtual bool ContainsValue(object value);

确定 SortedList 是否包含特定值

上述这三个函数与Hashtable完全相同

SortedList 用法相关推荐

  1. java sortedlist 用法_为什么Java中没有SortedList?

    本文翻译自:Why is there no SortedList in Java? In Java there are the SortedSet and SortedMap interfaces. ...

  2. Asp.net之数组应用

    string[] abc=new string[8]{"1","2","3","4","1",&qu ...

  3. SortedList 泛型类

    SortedList 泛型类   请参见  示例  成员   全部折叠 全部展开    语言筛选器: 全部 语言筛选器: 多个 语言筛选器: Visual Basic 语言筛选器: C# 语言筛选器: ...

  4. java jedis_Java操作Redis之Jedis用法详解

    Redis(Remote Dictionary Server,远程数据字典服务器)是一个开源的高性能内存数据库,常用作缓存缓存服务器使用,也已做消息队列使用.因其高性能.丰富的数据类型.可扩展等特性受 ...

  5. Java中ArrayList类的用法

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  6. java array使用_Java_ArrayLit详细用法

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  7. scala中sorted,sortby,sortwith的用法(转)

    scala中sorted,sortWith,sortBy用法详解 2017年07月23日 23:07:51 bitcarmanlee 阅读数:9249 版权声明:本文为博主原创文章,未经博主允许不得转 ...

  8. c#集合_键值对Dictionary SortedList

    前言: 在 C# 中,键值对是一种常见的数据结构,可以使用不同的集合类实现.以下是常用的键值对集合类: Dictionary<TKey, TValue>:一种使用哈希表实现的键值对集合.它 ...

  9. Java8 Stream用法总结

    Java8 Stream Stream 总览 什么是流 流的构成 流的构造与转换 构造流的几种常见方法 流转换为其它数据结构 中间操作符 map mapToInt mapToLong.mapToDou ...

  10. collection.stream用法

    collection.stream用法 stream流集几乎可以完成对集合的任意操作,映射.去重.分组.排序.过滤等 1.元素转换(映射) map 例1: List<SalesOrderProd ...

最新文章

  1. 每日百万订单,这样的技术方案更靠谱
  2. 平流式隔油池计算_广州隔油池清理公司讲述清理隔油池程序和标准_新闻中心...
  3. Mysql跨机房同步方案
  4. windows Pycharm 常用快捷键
  5. artTemplate的空白输出坑
  6. 徐昊:运用四色建模法进行领域分析
  7. 1.gloox开发环境搭建
  8. java中斗地主发牌程序代码_java模拟实现斗地主发牌小程序
  9. Swift新手教程3-字符串String
  10. ×××购回“四不像”笔记本
  11. spotify电脑下载歌曲_Spotify Music Converter mac版下载
  12. java动态表头_easyPOI动态表头
  13. 小赛毛游C记——初识C语言(1)
  14. 2019.4.8-pandas 读写csv;dorp删除行、列
  15. 飞凌国产芯片系列经验分享|A40i开发板应用笔记-PWM 的应用
  16. 台式计算机找不到蓝牙发射器,电脑网络适配器里没有蓝牙怎么办
  17. 我知道的风俗 和我喜欢的节日
  18. 读书笔记--电气符号(图形符号)
  19. 通过NFS实现Linux和window共享文件夹
  20. 前后端分离_博客项目

热门文章

  1. [NOIP2016]愤怒的小鸟
  2. JFinal Template Engine 使用
  3. MySQL连接localhost失败
  4. Java面向对象㈡ -- 继承与多态
  5. 在GRIDVIEW中合并单元格
  6. 【9933】单词的划分
  7. AC日记——A+B Problem(再升级) 洛谷 P1832
  8. 【BZOJ-13361337】Alie最小圆覆盖 最小圆覆盖(随机增量法)
  9. POJ2492A Bug's Life【并查集+根节点偏移】
  10. C# sqlDataReader区别Dataset