Tag: 集合

优雅的方式来结合多个元素的集合?

说我有任意数量的集合,每个集合包含相同types的对象(例如, List<int> foo和List<int> bar )。 如果这些集合本身位于一个集合中(例如List<List<int>> ,则可以使用SelectMany将它们合并到一个集合中。 但是,如果这些集合不在同一个集合中,那么我的印象就是我必须编写如下的方法: public static IEnumerable<T> Combine<T>(params ICollection<T>[] toCombine) { return toCombine.SelectMany(x => x); } 然后我会这样叫: var combined = Combine(foo, bar); 有没有一个干净,优雅的方式来结合(任意数量)的集合,而无需编写像上面的Combine这样的实用程序方法? 看起来很简单,在LINQ中应该有办法做到,但也许不行。

从另一个列表IDsorting列表

我有一个像这样的标识符的列表: List<long> docIds = new List<long>() { 6, 1, 4, 7, 2 }; 莫罗夫,我有另一个<T>项目的列表,这是由上述ID代表。 List<T> docs = GetDocsFromDb(…) 我需要在这两个集合中保持相同的顺序,以便List<T>中的项目必须位于与第一个项目相同的位置(由于search引擎评分的原因)。 而这个过程不能在GetDocsFromDb()函数中完成。 如果有必要,可以将第二个列表更改为其他结构(例如Dictionary<long, T> ),但是我不想更改它。 有没有什么简单而有效的方法来做这个“取决于某些ID的定义”与LINQ?

java.lang.IndexOutOfBoundsException:源不适合dest

在下面的代码中: static void findSubsets (ArrayList<Integer> numbers, int amount, int index) { ArrayList <Integer> numbersCopy = new ArrayList<Integer>(numbers.size()); Collections.copy(numbersCopy, numbers); } 我收到错误: Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest at java.util.Collections.copy(Collections.java:548) at backtracking2.Main.findSubsets(Main.java:61) 为什么?

什么时候应该在Java中接受Iterable <T>与Collection <T>的参数?

在Java中使用Iterable<T>与Collection<T>什么Iterable<T> ? 例如,考虑实现一个主要涉及包含Foo集合的types,以及一些关联的元数据。 这种types的构造函数允许一次初始化对象列表。 (元数据可以稍后设置。)这个构造函数应该接受什么types? Iterable<Foo>或Collection<Foo> ? 这个决定有什么考虑? 遵循由ArrayList (可以从任何Collection初始化,但不是 Iterable )等库types提出的模式将导致我使用Collection<Foo> 。 但是为什么不接受Iterable<Foo> ,因为这对初始化需求来说已经足够了。 为什么要求消费者提供更高级别的function( Collection ),而不是严格需要( Iterable )呢?

在什么情况下CopyOnWriteArrayList适合?

我正在学习CopyOnWriteArrayList类。 复制新arrays的目的是什么? 是否为其他线程读取数组? 所以如果一个系统具有很高的并发性,而且大多数线程的操作都是不读写的,最好使用CopyOnWriteArrayList 。

从集合到列表最快的转换<T>

我想避免的是: ManagementClass m = new ManagementClass("Win32_LogicalDisk"); ManagementObjectCollection managementObjects = m.GetInstances(); List<ManagementObject> managementList = new List<ManagementObject>(); foreach(ManagementObject m in managementObjects){ managementList.Add(m); } 没有办法把这个集合放到一个List里,看起来像这样: List<ManagementObject> managementList = new List<ManagementObjec>(collection_array);

C#可sorting的集合,它允许重复的键

我正在编写一个程序来设置一个序列,其中各种对象将出现在报告中。 序列是Excel电子表格中的Y位置(单元格)。 代码的演示部分如下。 我想完成的是有一个集合,这将允许我添加多个对象,我可以得到一个基于序列的sorting集合 SortedList list = new SortedList(); Header h = new Header(); h.XPos = 1; h.name = "Header_1"; list.Add(h.XPos, h); h = new Header(); h.XPos = 1; h.name = "Header_2"; list.Add(h.XPos, h); 我知道SortedList不会允许这个,我一直在寻找替代。 我不想消除重复,并已经尝试List<KeyValuePair<int, object>> 。 谢谢。

如何检查Map中是否存在键或值?

我有一个斯卡拉地图,并想testing是否存在一个特定的值在地图上。 myMap.exists( /*What should go here*/ )

C#迭代NameValueCollection

我有一个NameValueCollection ,并希望遍历值。 目前,我正在这样做,但似乎应该有一个更好的方法来做到这一点: NameValueCollection nvc = new NameValueCollection(); nvc.Add("Test", "Val1"); nvc.Add("Test2", "Val1"); nvc.Add("Test2", "Val1"); nvc.Add("Test2", "Val2"); nvc.Add("Test3", "Val1"); nvc.Add("Test4", "Val4"); foreach (string s in nvc) foreach (string v in nvc.GetValues(s)) Console.WriteLine("{0} {1}", s, v); Console.ReadLine(); 在那儿?

.asSet(…)是否存在于任何API中?

我正在寻找一个非常简单的方法来创build一个集合。 Arrays.asList("a", "b" …)创build一个List<String> 有什么类似的Set ?