Tag: 集合

如何检查一个元素是在一个std :: set?

你如何检查一个元素是在一个集合? 有一个更简单的相当于下面的代码: myset.find(x) != myset.end()

为什么没有java.util.Set get(int index)?

我确定有一个很好的理由,但是有人能解释为什么java.util.Set接口缺lessget(int Index)或者任何类似的get()方法吗? 看起来套是伟大的东西进入,但我找不到一个优雅的方式从它检索单个项目。 如果我知道我想要的第一个项目,我可以使用set.iterator().next() ,但否则似乎我必须转换到一个数组来检索特定索引的项目? 从一个集合中检索数据有什么合适的方法? (除了使用迭代器) 我相信,从API中排除这个事实意味着不这样做的一个很好的理由 – 请问有人能够启发我吗? 编辑:这里有一些非常好的答案,还有一些说“更多的上下文”。 具体的情况是一个dbUnittesting,我可以合理地断言,查询返回的集合只有一个项目,我试图访问该项目。 但是,如果没有这种情况,这个问题就更加有效了,因为它仍然更加集中: 设置和列表有什么区别 。 感谢所有的下面的美妙的答案。

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 two arrays. int[] array1 […]

.NET的HashTable Vs字典 – 字典可以一样快吗?

我想弄清楚什么时候以及为什么要使用Dictionary或HashTable。 我在这里做了一些search,发现人们在谈论“词典”的通用优势,我完全同意这个观点,这个优势在拳击和拆箱方面略有提升。 但是我也读了Dictionary,它并不总是按照它们插入的顺序返回对象,它对它进行sorting。 作为一个HashTable将在哪里。 据我所知,这导致HashTable在某些情况下快得多。 我的问题是,这些情况可能是什么? 我在上面的假设中错了吗? 你可以用什么样的情况来select一个在另一个之上,(是的,最后一个是有点模糊的)。

什么是最简单的方法来颠倒ArrayList?

什么是最简单的方法来扭转这个ArrayList? ArrayList aList = new ArrayList(); //Add elements to ArrayList object aList.add("1"); aList.add("2"); aList.add("3"); aList.add("4"); aList.add("5"); while (aList.listIterator().hasPrevious()) Log.d("reverse", "" + aList.listIterator().previous());

在Java中增加Map值最有效的方法

我希望这个问题不被视为这个论坛的基础,但我们会看到。 我想知道如何重构一些代码,以获得更好的性能,这是一堆运行。 假设我正在创build一个词频列表,使用一个Map(可能是一个HashMap),其中每个键都是一个string,其中的单词是被计数的,并且该值是一个整数,每次find该单词的一个标记时,该整数就会递增。 在Perl中,增加这样一个值将是非常简单的: $map{$word}++; 但在Java中,它更复杂。 这里我正在做的方式是: int count = map.containsKey(word) ? map.get(word) : 0; map.put(word, count + 1); 当然这依赖于较新的Java版本中的自动装箱function。 我想知道你是否可以提出一个更有效的方式来增加这样的价值。 是否有避免使用Collections框架和使用其他方法的良好性能? 更新:我已经做了几个答案的testing。 见下文。

简单的方法来改变集合的Iterable

在我的应用程序中,我使用第三方库(准确地说是MongoDb的Spring Data)。 这个库的方法返回Iterable<T> ,而我的代码的其余部分需要Collection<T> 。 有什么实用的方法,让我快速转换到另一个。 我想避免在我的代码中做这样一个简单的事情foreach循环banch。

为什么没有针对ConcurrentHashMap的ConcurrentHashSet

HashSet基于HashMap。 如果我们看一下HashSet<E>实现,所有东西都在HashMap<E,Object>之下进行pipe理。 <E>被用作HashMap的关键字。 而且我们知道HashMap不是线程安全的。 这就是为什么我们有Java中的ConcurrentHashMap 。 基于此,我很困惑, 为什么我们没有一个ConcurrentHashSet应该基于ConcurrentHashMap ? 还有什么我失踪? 我需要在multithreading环境中使用Set 。 另外,如果我想创build我自己的ConcurrentHashSet ,我可以通过将HashMapreplace为ConcurrentHashMap并将其余部分保持原样来实现它?

如何将数组转换为Java中的Set

我想将数组转换为Java中的Set。 有一些明显的做法(即循环),但我想要一些整洁的东西,如: java.util.Arrays.asList(Object[] a); 有任何想法吗?

如何在Java中创build一个新的List

我们创build一个Set为: Set myset = new HashSet() 我们如何在Java中创build一个List ?