Questions tagged «collections»

集合API为开发人员提供了一组类和接口,使处理对象集合更加容易。


9
如何轻松地初始化元组列表?
我爱元组。它们使您可以快速将相关信息分组在一起,而不必为其编写结构或类。在重构非常本地化的代码时,这非常有用。 但是,初始化它们的列表似乎有点多余。 var tupleList = new List<Tuple<int, string>> { Tuple.Create( 1, "cow" ), Tuple.Create( 5, "chickens" ), Tuple.Create( 1, "airplane" ) }; 有没有更好的办法?我希望有一个类似于Dictionary Initializer的解决方案。 Dictionary<int, string> students = new Dictionary<int, string>() { { 111, "bleh" }, { 112, "bloeh" }, { 113, "blah" } }; 我们不能使用类似的语法吗?


10
.NET HashTable与字典-字典可以这么快吗?
我试图弄清楚何时以及为什么使用Dictionary或HashTable。我在这里做了一些搜索,发现人们谈论我完全同意的《词典》的一般优势,这导致装箱和拆箱的优势略有提高。 但是我也读过Dictionary并不会总是按插入对象的顺序返回对象,而是对其进行排序。像HashTable一样。据我了解,这导致HashTable在某些情况下会快得多。 我的问题是,这些情况可能是什么?我在上面的假设中错了吗?您可能会使用哪种情况来选择另一种情况(是的,最后一种情况有点模棱两可)。

8
相反的Intersect()
相交可用于查找两个集合之间的匹配项,如下所示: // Assign two arrays. int[] array1 = { 1, 2, 3 }; int[] array2 = { 2, 3, 4 }; // Call Intersect extension method. var intersect = array1.Intersect(array2); // Write intersection to screen. foreach (int value in intersect) { Console.WriteLine(value); // Output: 2, 3 } 但是我想要实现的却是相反的,我想列出一个集合中另一个集合中缺少的项目: // Assign …


9
如何以相同的方式随机化两个ArrayList?
我有两个arraylist filelist并且imgList彼此相关,例如,与“ e1.jpg”相关的“ H1.txt”。如何imgList根据的随机化自动对列表进行随机化fileList?像在excel中一样,如果我们对某些列进行排序,其他列会自动跟随吗? String [] file = {"H1.txt","H2.txt","H3.txt","M4.txt","M5.txt","M6.txt"}; ArrayList<String> fileList = new ArrayList<String>(Arrays.asList(file)); String [] img = {"e1.jpg","e2.jpg","e3.jpg","e4.jpg","e5.jpg","e6.jpg"}; ArrayList<String> imgList = new ArrayList<String>(Arrays.asList(img)); //randomized files Collections.shuffle(fileList); 随机化后的输出,例如: fileList = {"M4.txt","M6.txt","H3.txt","M5.txt","H2.txt","H1.txt"}; 预期的输出: imgList = {"e4.jpg","e6.jpg","e3.jpg","e5.jpg","e2.jpg","e1.jpg"};

8
如何在C#中重载方括号运算符?
例如,使用DataGridView,您可以执行以下操作: DataGridView dgv = ...; DataGridViewCell cell = dgv[1,5]; 但是对于我来说,我找不到索引/方括号运算符的文档。他们怎么称呼它?在哪里实施?能扔吗?我如何在自己的课堂上做同样的事情? ETA:感谢您提供所有快速解答。简要地说:相关文档在“项目”属性下;重载的方法是通过声明一个类似的属性public object this[int x, int y]{ get{...}; set{...} }; 至少根据文档,DataGridView的索引器不会抛出。它没有提到如果您提供无效的坐标会发生什么。 再次ETA:好的,即使文档中没有提及它(顽皮的Microsoft!),事实证明,如果为DataGridView的索引器提供了无效的坐标,则实际上它会抛出ArgumentOutOfRangeException。公平警告。

16
查找两个不同列表是否包含完全相同的元素的简单方法?
在标准Java库中查找两个List是否包含完全相同的元素的最简单方法是什么? 两个列表是否为同一实例无关紧要,并且列表的类型参数是否不同也无关紧要。 例如 List list1 List<String> list2; // ... construct etc list1.add("A"); list2.add("A"); // the function, given these two lists, should return true 我认识的脸上可能有些东西盯着我:-) 编辑:为澄清起见,我一直在按顺序寻找完全相同的元素和元素数量。
252 java  collections 

15
在Java中以相反的顺序遍历列表
我正在迁移一段代码以利用泛型。这样做的一个论据是for循环比跟踪索引或使用显式迭代器要干净得多。 在大约一半的情况下,今天使用索引以相反的顺序迭代列表(ArrayList)。 有人能建议一种更干净的方法(因为我不喜欢indexed for loop使用集合时),尽管它确实可以工作? for (int i = nodes.size() - 1; i >= 0; i--) { final Node each = (Node) nodes.get(i); ... } 注意:我无法在JDK之外添加任何新的依赖项。
251 java  collections 



5
List <T>是否保证插入顺序?
假设我在列表中有3个字符串(例如“ 1”,“ 2”,“ 3”)。 然后,我想对它们进行重新排序以将“ 2”放在位置1(例如“ 2”,“ 1”,“ 3”)。 我正在使用此代码(将indexToMoveTo设置为1): listInstance.Remove(itemToMove); listInstance.Insert(indexToMoveTo, itemToMove); 这似乎可行,但是我偶尔会得到奇怪的结果。有时订单不正确或列表中的项目被删除! 有任何想法吗?是否List&lt;T&gt;保证订单? 有关: List &lt;T&gt;是否保证按添加顺序返回项目?
238 c#  .net  collections 

18
为什么java.util.Set没有get(int index)?
我确信这是有充分理由的,但是有人可以解释一下为什么java.util.Set缺少接口get(int Index)或任何类似get()方法吗? 集合似乎很适合放入东西,但是我找不到从其中检索单个项目的优雅方法。 如果我知道我想要第一个项目,则可以使用set.iterator().next(),但否则似乎必须强制转换为Array才能在特定索引处检索项目? 从集合中检索数据的适当方法是什么?(除了使用迭代器之外) 我敢肯定,将其排除在API之外的事实意味着有充分的理由不这样做-有人可以启发我吗? 编辑: 这里有一些非常好的答案,有的说“更多的上下文”。具体情况是dbUnit测试,在这里我可以合理地断言从查询返回的集合只有1个项目,而我试图访问该项目。 但是,如果没有这种情况,这个问题会更有效,因为它仍然更加集中: set和list有什么区别。 感谢所有以下出色的答案。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.