Tag: 集合

linq问题:查询嵌套集合

我有一个问题类具有公共列表属性,可以包含几个答案 。 我有一个问题库,它负责从XML文件中读取问题及其答案。 所以我有一个问题(列表)的集合与每个问题对象有一个答案的集合,我想查询这个问题的答案(即通过其名称)使用Linq的集合。 我不知道如何正确地做到这一点。 我可以用foreach做,但是我想知道是否有一种纯粹的Linq方法,因为我正在学习它。

数组与ArrayList的性能

在Objecttypes的Array和Objecttypes的ArrayList之间,哪一个性能更好? 假设我们有一个Animal对象数组: Animal animal[]和一个ArrayList list<Animal> : ArrayList list<Animal> 现在我正在做animal[10]和list.get(10)哪一个更快,为什么?

Collectors.toMap()keyMapper – 更简洁的expression式?

我想在下面的“Collectors.toMap()”调用中为“keyMapper”函数参数提供一个更简洁的expression式: List<Person> roster = …; Map<String, Person> map = roster .stream() .collect( Collectors.toMap( new Function<Person, String>() { public String apply(Person p) { return p.getLast(); } }, Function.<Person>identity())); 看来我应该能够使用lambdaexpression式来embedded它,但我不能拿出一个编译。 (我对lambda非常陌生,所以这并不令人意外。) 谢谢。 – >更新: 正如接受的答案中指出的那样 Person::getLast 是我一直在寻找的,而且是我曾经尝试过的。 然而,Eclipse 4.3的夜晚版本是个问题 – 它标记为错误的。 从命令行编译(我应该在发布之前完成),它工作。 那么,现在是时候用eclipse.org提交一个bug了。 谢谢。

C#列表 – 删除项目while循环/迭代

假设我有下面的代码片段: var data=new List<string>(){"One","Two","Three"}; for(int i=0 ; i<data.Count ; i++){ if(data[i]=="One"){ data.RemoveAt(i); } } 以下代码引发exception。 我的问题是什么是避免这种exception,并在循环中删除元素的最好办法?

Java:从Set <String>枚举

我有一个简单的collections问题。 我有一个Set<String>对象。 我想要枚举该集合中的string。 什么是最干净/最好的方式去做呢?

为什么java.util.Set <V>接口不提供get(Object o)方法?

我知道只有一个根据.equals()的对象的实例被允许在一个Set中,如果你已经有了一个等价的对象,你不应该“需要”从Set中获取一个对象,但是我仍然想有一个.get()方法,返回Set(或null)中对象的实际实例,给定一个等效对象作为参数。 任何想法/理论为什么它是这样devise的? 我通常不得不通过使用Map来创build关键和值,或者类似的东西来解决这个问题。 编辑:我不认为人们理解我的问题到目前为止。 我希望确切的对象实例已经在集合中,而不是一个可能不同的对象实例,其中.equals()返回true。 至于为什么我想要这种行为,通常.equals()不考虑对象的所有属性。 我想提供一些虚拟的查找对象,并返回Set中的实际对象实例。

NameValueCollection上的属性Keys和AllKeys之间有什么区别?

System.Collections.Specialized.NameObjectCollectionBase有两个相似的属性: string[] AllKeys NameObjectCollectionBase.KeyCollection Keys 他们提供不同的数据集吗? 我什么时候想用另一个呢?

在Guava中展平Iterable <Iterable <T >>

在Guava中是否有flatten方法 – 或者将Iterable<Iterable<T>>转换为Iterable<T> ? 我有一个Multimap<K, V> [sourceMultimap],我想返回键匹配某个谓词[keyPredicate]的所有值。 所以现在我有: Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values(); Collection<V> retColl = …; for (Collection<V> vs : vals) retColl.addAll(vs); return retColl; 我已经浏览了番石榴文件,但没有跳出来。 我只是检查我没有错过任何东西。 否则,我将把我的三行提取到一个简短的扁平通用方法中,并保持原样。

Java在O(1)合并2个集合

我需要能够将2个大集合合并为1.哪种集合types最适合我? 我不需要随机访问各个元素。 通常我会去找一个链表,但是我不能将2个链表在Java中与O(1)的运行时相结合,这可以用其他语言来完成,因为我必须将每个元素复制到新列表中。 编辑:谢谢你的答案。 你的回答都非常有帮助,我设法完成了工作。 下一次,我将使用我自己的实现一个链接列表开始。

Java中整型的短序列

生成一个List<Integer> ,或者一个Integer[]或者int[] ,必须有一个简短而可爱的方法,用从某个start值到end值的顺序值。 也就是说,比以下更短,但相当于1 : void List<Integer> makeSequence(int begin, int end) { List<Integer> ret = new ArrayList<>(end – begin + 1); for (int i=begin; i<=end; i++) { ret.add(i); } return ret; } …但是它在逃避我 使用番石榴是好的。 更新: 性能分析 由于这个问题已经得到了几个很好的答案,无论是使用原生Java 8和第三方库,我想我会testing所有解决scheme的性能。 第一个testing简单地使用以下方法testing创build一个包含10个元素的列表[1..10] : classicArrayList :在我的问题上面给出的代码(和adarshr的答案基本相同)。 eclipseCollections :使用Eclipse Collections 8.0在Donald的答案中给出的代码。 guavaRange : daveb在下面的答案给出的代码。 从技术上讲,这不会创build一个List<Integer>而是创build一个ContiguousSet<Integer> – 但是由于它实现了Iterable<Integer> ,所以它主要用于我的目的。 intStreamRange :在下面的Vladimir的答案中给出的代码,它使用IntStream.rangeClosed() […]