Tag: 集合

如何在Linq中合并一个集合

我希望能够融合一个IEnumerable<IEnumerable<T>>到IEnumerable<T> (即合并所有个人集合成一个)。 Union运营商只适用于两个集合。 任何想法?

我什么时候可以使用java Collections的singletonMap方法?

我不明白为什么你会需要java集合singletonMap ? 它在multithreading应用程序中有用吗?

如何结合两个词典没有循环?

我在C#中有两个<string,object>types的字典。 如何将一个Dictionary对象的所有内容复制到另一个而不应用循环?

如何对Collection <T>进行sorting?

我有一个通用的Collection并试图找出如何对其中包含的项目进行sorting。 我已经尝试了一些东西,但我不能让他们中的任何一个工作。

selectJava集合实现的经验法则?

任何人都有一个很好的经验法则来selectJava Collection接口的不同实现,比如List,Map或Set吗? 例如,一般为什么或在什么情况下我会喜欢使用Vector或ArrayList,Hashtable或HashMap?

性能差异…如此戏剧性?

刚才我看了一些关于List<T> vs LinkedList<T>post ,所以我决定自己对一些结构进行基准testing。 我通过添加数据和从前端/末端删除数据,对Stack<T> , Queue<T> , List<T>和LinkedList<T>了基准testing。 基准testing结果如下: Pushing to Stack… Time used: 7067 ticks Poping from Stack… Time used: 2508 ticks Enqueue to Queue… Time used: 7509 ticks Dequeue from Queue… Time used: 2973 ticks Insert to List at the front… Time used: 5211897 ticks RemoveAt from List at the front… Time […]

为什么java.util.Properties实现Map <Object,Object>而不是Map <String,String>

java.util.Properties类是为了表示键和值都是string的映射。 这是因为Properties对象用于读取文本文件.properties文件。 那么,为什么在Java 5中他们改造了这个类来实现Map<Object,Object>而不是Map<String,String>呢? javadoc说: 由于Properties从Hashtableinheritance,put和putAll方法可以应用于Properties对象。 强烈build议不要使用它们,因为它们允许调用者插入其键或值不是string的条目。 应该使用setProperty方法。 如果store或save方法在包含非String键或值的“受损”Properties对象上调用,则调用将失败。 由于键和值都被认为是string,那么为什么不使用适当的generics来强制执行? 我猜使Properties实现Map<String,String>不能完全向后兼容为Java 5以前版本编写的代码。如果你有老的代码将非string粘贴到一个Properties对象中,那么这个代码将不再使用Java 5进行编译但是…不是件好事吗? generics的全部不是在编译时捕获这种types的错误吗?

怎么了O(1)?

在讨论涉及散列和searchtypes的algorithm时,我一直注意到O(1)的一些非常奇怪的用法,通常是在使用由语言系统提供的字典types的情况下,或者使用使用数组的字典或散列数组types指数表示法 基本上,O(1)是指以一个固定的时间和(通常)固定的空间为界。 一些相当基本的操作是O(1),虽然使用中间语言和特殊的虚拟机往往扭曲在这里思考的人(例如,如何摊销垃圾收集器和其他dynamic的过程,否则会O(1)活动)。 但是忽略了延迟的分期,垃圾收集等等,我还是不明白,除非是在非常特殊的条件下,假设某些涉及某种search的技术可以是O(1)。 虽然我之前已经注意到了这个问题,但是在Pandincus问题中出现了一个例子,“在C#.NET中使用O(1)时间获取项目的'正确'集合? 。 正如我在那里提到的那样,我所知道的唯一的集合提供了O(1)访问作为保证边界,它是一个固定边界数组,具有整数索引值。 假定数组是通过映射到使用O(1)操作来定位具有该索引的单元的随机存取存储器来实现的。 对于涉及某种search以确定不同types索引(或具有整数索引的稀疏数组)的匹配单元的位置的集合,生活并不那么容易。 特别是,如果有碰撞和拥塞是可能的,访问不完全是O(1)。 如果集合是灵活的,则必须认识并分摊扩展拥塞缓解(例如,高的碰撞发生率或树不平衡)的基础结构(例如树或散列表)的成本。 我永远不会想到把这些灵活和dynamic的结构说成是O(1)。 然而,我认为他们提出的O(1)解决scheme没有任何必须保持​​的条件,以确保(1)访问得到保证(以及有恒定的可以忽略的小)。 问题:所有这些准备工作都是一个问题。 O(1)的休闲是什么?为什么盲目接受? 即使接近于常数,即使O(1)可能会不理想地大,是否认识到呢? 或者是(1)简单地将计算复杂性概念挪用于非正式使用? 我感到困惑。 更新:答案和评论指出了我自己定义O(1)的地方,而且我已经修复了这个问题。 我仍然在寻找好的答案,有些评论线索比他们的答案更有趣,在一些情况下。

在Java中打印HashMap

我有一个HashMap: private HashMap<TypeKey,TypeValue > example= new HashMap<TypeKey, TypeValue>(); 现在我想运行所有的值并打印出来。 我写了这个: for (TypeValue name: this.example.keySet()){ System.out.println(name); } 这似乎并不奏效。 问题是什么? 编辑:另一个问题:这个集合零为基础? 我的意思是如果它有1个键和值将大小为0或1?

List,IList,IEnumerable,IQueryable,ICollection,这是最灵活的返回types?

我以前在这里看过这个问题,但是我并不满意,我理解完整的后果。 问题是什么返回types应该使用linq-to-sql的数据层返回最大的灵活性和查询能力。 这是我读过/发现的: IEnumerable是有限的,只允许读取前进操作。 IEnumerable是最通用的。 我发现IEnumerable确实允许查询操作与扩展语法。 列表允许最大的灵活性,因为插入操作。 应该使用集合而不是列表来启用只读集合。 不应该使用IQueryable,应该“使用和closures”。 IQueryable不会返回一个列表,但会为数据库生成一个查询语法。 我觉得我有一个更好的感觉权衡,但仍然不确定几件事情: 为什么我会select具体types的接口变体? 即IList或ICollection vs列表或集合。 我会得到什么好处? 我看到扩展操作的工作,但扩展查询语法的工作呢? 有人build议我以前使用AsQueryable()。 但是,如果我没有连接到数据库,为什么要这样做呢? 看来扩展方法无论如何工作。