Dictionary 没有先后顺序.?

时间:2021-12-25 20:21:54
System.Collections.Generic 中的 Dictionary 一直Add数据后,然后再Remove一些元素。此时 Dictionary就没有按加入的先后顺序排列了。怎么解决?

16 个解决方案

#1


字典嘛,按key查找的

#2


据说是无保证的

#3


用LIST

#4


没有
不然要SortedDictionary<T,K>干嘛

#5


SortedDictionary 泛型类 
  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/

#6


SortedDictionary  我也使用了一下,也是不行的.我在将一个Model初如化后丢入SortedDictionary  中, 当初始化时,我将每次MODEL的ITEMID分别写为当前加进去的当前COUNT,
结果在一个列表页显示SortedDictionary  时,列表中的ITEMID 却依次排序为 :1 2 4 3.说明它们并没有按先后顺序保存.

#7


关注

#8


学习中

#9


现在在学习这种C#

#10


没用到过排序~

#11


Dictionary输出的顺序就是你add的循序,你不妨把代码贴出来看看

#12


private Dictionary<string, ItemInfo> _cartitems= new Dictionary<string, ItemInfo>();

public void Add(string id){ 
    item= new ItemInfo(
                    ItemCount + 1, 
                    "name"
                    );
    _cartitems.Add(id, cartitem);
}

public int ItemCount {
        get { return _cartitems.Count; }
}

public ICollection<CartItemInfo> CartItems {
       get { return _cartitems.Values; }
}

public void Remove(string id) {
      _cartitems.Remove(id);
}

大致代码如上
在使用
Add("1");
Add("2");
Add("3");
Add("4");
然后列出列表
cartitems中的ItemInfo
显示ItemInfo 时应该是
1,"name"
2,"name"
3,"name"
4,"name"
可是它却可能变成(没有规律)
1,"name"
2,"name"
4,"name"
3,"name"

#13


你查MSDN  Dictionary写明了是无序的   有序的使用SortDictionary

如果不存在多线程的因素  SortDictionary是按key排序的

#14


根本就没有顺序,他是按散列来存放的,没有什么顺序之说

#15


那怎么即使用KEY访问.又要有序呢?有没有综合一点解决方法?

#16


看来是无序的了

#1


字典嘛,按key查找的

#2


据说是无保证的

#3


用LIST

#4


没有
不然要SortedDictionary<T,K>干嘛

#5


SortedDictionary 泛型类 
  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/

#6


SortedDictionary  我也使用了一下,也是不行的.我在将一个Model初如化后丢入SortedDictionary  中, 当初始化时,我将每次MODEL的ITEMID分别写为当前加进去的当前COUNT,
结果在一个列表页显示SortedDictionary  时,列表中的ITEMID 却依次排序为 :1 2 4 3.说明它们并没有按先后顺序保存.

#7


关注

#8


学习中

#9


现在在学习这种C#

#10


没用到过排序~

#11


Dictionary输出的顺序就是你add的循序,你不妨把代码贴出来看看

#12


private Dictionary<string, ItemInfo> _cartitems= new Dictionary<string, ItemInfo>();

public void Add(string id){ 
    item= new ItemInfo(
                    ItemCount + 1, 
                    "name"
                    );
    _cartitems.Add(id, cartitem);
}

public int ItemCount {
        get { return _cartitems.Count; }
}

public ICollection<CartItemInfo> CartItems {
       get { return _cartitems.Values; }
}

public void Remove(string id) {
      _cartitems.Remove(id);
}

大致代码如上
在使用
Add("1");
Add("2");
Add("3");
Add("4");
然后列出列表
cartitems中的ItemInfo
显示ItemInfo 时应该是
1,"name"
2,"name"
3,"name"
4,"name"
可是它却可能变成(没有规律)
1,"name"
2,"name"
4,"name"
3,"name"

#13


你查MSDN  Dictionary写明了是无序的   有序的使用SortDictionary

如果不存在多线程的因素  SortDictionary是按key排序的

#14


根本就没有顺序,他是按散列来存放的,没有什么顺序之说

#15


那怎么即使用KEY访问.又要有序呢?有没有综合一点解决方法?

#16


看来是无序的了