Questions tagged «collections»

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

4
什么是泛型泛型?它们如何解决“类型擦除”问题?为什么不进行重大更改就不能添加它们?
我已经阅读了尼尔·古夫特(Neal Gafter)关于该主题的博客,但在很多方面仍不清楚。 为什么在给定Java,JVM和现有collection API当前状态的情况下,无法创建Collections API的实现来保留类型信息?这些难道不能以保留向后兼容性的方式替换Java未来版本中的现有实现吗? 举个例子: List<T> list = REIList<T>(T.Class); REIList是这样的: public REIList<T>() implements List { private Object o; private Class klass; public REIList(Object o) { this.o = o; klass = o.getClass(); } ... the rest of the list implementation ... 并且这些方法使用Object o和Class klass来获取类型信息。 为什么保留通用类信息需要更改语言而不仅仅是JVM实现更改? 我不明白什么?

11
如何从列表中快速删除项目
我正在寻找一种快速从C#中删除项目的方法List<T>。该文档指出,List.Remove()和List.RemoveAt()操作都是O(n) 列表删除 List.RemoveAt 这严重影响了我的应用程序。 我写了几种不同的删除方法,并List<String>用500,000个项目对它们全部进行了测试。测试案例如下所示。 总览 我编写了一种方法,该方法将生成一个字符串列表,其中仅包含每个数字(“ 1”,“ 2”,“ 3”,...)的字符串表示形式。然后,我尝试尝试remove列表中的第5个项目。这是用于生成列表的方法: private List<String> GetList(int size) { List<String> myList = new List<String>(); for (int i = 0; i < size; i++) myList.Add(i.ToString()); return myList; } 测试1:RemoveAt() 这是我用来测试RemoveAt()方法的测试。 private void RemoveTest1(ref List<String> list) { for (int i = 0; i < list.Count; i++) …
72 c#  linq  list  collections 

8
Java 8 Streams可以对集合中的项目进行操作,然后将其删除吗?
像几乎每个人一样,我仍在学习新的Java 8 Streams API的复杂性(并喜欢它们)。我对流的使用有疑问。我将提供一个简化的示例。 Java Streams允许我们采用Collection,并stream()在其上使用方法来接收其所有元素的流。在这,有许多有用的方法,比如filter(),map()和forEach(),这让我们对内容的使用拉姆达操作。 我有看起来像这样的代码(简化): set.stream().filter(item -> item.qualify()) .map(item -> (Qualifier)item).forEach(item -> item.operate()); set.removeIf(item -> item.qualify()); 想法是获取集合中与某个限定符匹配的所有项目的映射,然后对它们进行操作。手术后,它们不再具有任何用途,应从原始设备中取出。该代码运行良好,但是我无法动摇一种感觉,Stream即可以在一行中为我完成操作。 如果在Javadocs中,我可能会忽略它。 有谁更熟悉API,会看到类似的东西吗?

14
C#是否可以给我一个不变的字典?
C#核心库中是否内置可以为我提供不可变字典的任何内容? 类似于Java的东西: Collections.unmodifiableMap(myMap); 只是为了澄清一下,我并不是要阻止键/值本身被更改,而只是希望字典的结构不会停止更改。如果将IDictionary的任何mutator方法称为(Add, Remove, Clear),我希望它们能够快速响亮。

10
遍历Java中的字符串数组
我有一些组件的String数组,此数组有5个组件,有时会有所不同。我想做的是遍历该数组,并获得第一个组件和该组件旁边的组件。因此,我第一次获得组件编号1和2,第二次获得编号2和3,第三次获得3和4 ...依此类推,直到找到最后一个组件。 这是我走了多远: String[] elements = { "a", "a","a","a" }; for( int i = 0; i <= elements.length - 1; i++) { // get element number 0 and 1 and put it in a variable, // and the next time get element 1 and 2 and put this in another …


5
Python defaultdict和lambda
在其他人的代码中,我阅读了以下两行: x = defaultdict(lambda: 0) y = defaultdict(lambda: defaultdict(lambda: 0)) 由于defaultdict的参数是默认工厂,因此我认为第一行表示当我为不存在的键k调用x [k](例如类似v = x [k]的语句)时,键值对(k ,0)会自动添加到字典中,就像首先执行语句x [k] = 0一样。我对么? 那y呢?似乎默认工厂将创建一个默认值为0的defaultdict。但这具体意味着什么?我试图在Python shell中尝试使用它,但无法弄清楚它到底是什么。

3
何时在NHibernate / Hibernate OneToMany关系上使用inverse = false?
我一直试图了解Hibernate的inverse属性,但这似乎只是概念上困难的事情之一。 我得到的要点是,当您拥有一个使用一对多映射的Child对象集合的父实体(例如Parent)时,在映射上设置inverse = true会告诉Hibernate'另一面(子)有责任自行更新以维护其表中的外键引用。 在将Children添加到代码中的集合中,然后保存Parent(设置了cascade-all)时,这样做似乎有两个好处:您可以在数据库上保存不必要的命中(因为没有设置逆设置,Hibernate认为这样)有两个地方可以更新FK关系),并且根据官方文档: 如果关联的列声明为NOT NULL,则NHibernate在创建或更新关联时可能会导致约束冲突。为防止出现此问题,必须使用双向关联,将多个值端(集合或包)标记为inverse =“ true”。 到目前为止,这一切似乎都有意义。我不明白是这样的:你什么时候会不希望使用逆=真正在一个一对多的关系?

5
解释Collections。<String> emptyList()的语法
我只是研究了通用编程,List&lt;E&gt;接口和ArrayList,所以我可以理解下面的语句。 ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;(); 但是我不理解在浏览网络时看到的下一条语句。 List&lt;String&gt; list2 = Collections.&lt;String&gt;emptyList(); 什么Collections啊 为什么不是Collections&lt;E&gt;还是Collections&lt;String&gt;? 为什么&lt;String&gt;将方法名称放在前面emptyList? (emptyList&lt;String&gt;()对于Generic是否正确?) 该声明是什么意思?

5
Symfony2实体集合-如何添加/删除与现有实体的关联?
1.快速概述 1.1目标 我想要实现的是一个创建/编辑用户工具。可编辑的字段是: 用户名(类型:文本) plainPassword(类型:密码) 电子邮件(类型:电子邮件) 组(类型:集合) avoRoles(类型:集合) 注意:最后一个属性未命名为$ roles,因为我的User类正在扩展FOSUserBundle的User类,并且覆盖角色带来了更多问题。为了避免它们,我只是决定将我的角色集合存储在$ avoRoles下。 1.2用户界面 我的模板包括2个部分: 用户表格 该表显示$ userRepository-&gt; findAllRolesExceptOwnedByUser($ user); 注意:findAllRolesExceptOwnedByUser()是一个自定义存储库函数,返回所有角色的子集(尚未分配给$ user的角色)。 1.3所需功能 1.3.1添加角色: WHEN用户点击“+”(添加)按钮,在角色表 THEN jQuery的删除了从角色表行 和 jQuery的添加新的列表项用户表单(avoRoles名单) 1.3.2删除角色: WHEN用户点击“X”(删除)按钮,用户形式(avoRoles列表) THEN jQuery的删除了从用户的形式(avoRoles列表)列表项 和 jQuery的增加了新的行角色表 1.3.3保存更改: WHEN用户点击“Zapisz”(保存)按钮, 那么用户表单提交的所有字段(用户名,密码,电子邮件,avoRoles,团体) 和 保存avoRoles为角色的实体(多对多关系)的ArrayCollection 和 保存群体的角色实体的ArrayCollection( ManyToMany关系) 注意:只能将现有角色和组分配给用户。如果由于任何原因未找到它们,则该表单不应验证。 2.代码 在本节中,我介绍/或简短描述此操作背后的代码。如果描述不够,您需要查看代码,请告诉我,然后将其粘贴。我并不是一开始就将其全部粘贴,以免向您发送不必要的代码。 2.1用户等级 我的用户类扩展了FOSUserBundle用户类。 namespace Avocode\UserBundle\Entity; use FOS\UserBundle\Entity\User …

7
从集合到列表的最快转换
我要避免的是: ManagementClass m = new ManagementClass("Win32_LogicalDisk"); ManagementObjectCollection managementObjects = m.GetInstances(); List&lt;ManagementObject&gt; managementList = new List&lt;ManagementObject&gt;(); foreach(ManagementObject m in managementObjects){ managementList.Add(m); } 没有一种方法可以将该集合放入看起来像这样的List中: List&lt;ManagementObject&gt; managementList = new List&lt;ManagementObjec&gt;(collection_array);
69 c#  collections 

10
从集合中选择随机子集的最佳方法?
我在Vector中有一组对象,我想从中选择一个随机子集(例如,返回100个项目;随机选择5个)。在我的第一遍(非常仓促)中,我做了一个非常简单甚至过于聪明的解决方案: Vector itemsVector = getItems(); Collections.shuffle(itemsVector); itemsVector.setSize(5); 尽管这样做的好处是简单易用,但我怀疑它的伸缩性不会很好,即Collections.shuffle()至少必须为O(n)。我不太聪明的选择是 Vector itemsVector = getItems(); Random rand = new Random(System.currentTimeMillis()); // would make this static to the class List subsetList = new ArrayList(5); for (int i = 0; i &lt; 5; i++) { // be sure to use Vector.remove() or you may get …


8
确保元素唯一性的队列?
我正在寻找java.util.Queue的实现或Google集合中某些行为类似于Queue的实现,但还要确保队列中的每个元素都是唯一的。(所有进一步插入均无效) 有这种可能,还是我必须手工做? 现在,我正在使用带有LinkedList实现的Queue,并在插入之前检查其唯一性。(我使用侧面图进行此操作,在排队之前/之后在侧面图中添加/删除元素)。我不太喜欢 欢迎任何输入。如果它不在java.util包中,那可能不是一个好主意?


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.