我需要迭代两个元素的所有组合:在集合[1,2,3,4]中,我想迭代[(1,2),(1,3),(1.4),(2,3),,(2,4),(3,4)]。是否有现有的工具可以执行此操作?
// Not what I need, works wrong!
for (Object o1 : set) {
for (Object o2 : set) {
if (o1 == o2) continue;
...
}
}
这段代码将执行两倍于所需的操作,因为在两个循环中都将访问每个对象。
为此编写自己的方法是微不足道的,我只是不想发明轮子。我期望在Guava或Collections API中找到这个,但是没有找到这样的功能。
我不确定您将使用什么Set,但如果它具有随机访问,也就是说,如果您可以显式地请求位置I
中的成员,那么您可以使用双for
with the second iterator渐变:例如。
for(i = 0; i < Set1_size; i++)
for(j = i; j < Set1_size; i++)
{ o1.get(i).equals(o2); }
这样,您只需循环浏览之前比较的一半(实际上是主对角线的一半)。
将continue
替换为break几乎可以实现您想要的功能:它不会生成交换对。它还将开销减半(这是您不关心的)。
您只需交换
o1
和o2
o的名称即可获得所需的对。
正如注释中所指出的,
Set
s没有迭代顺序保证。因此,请务必事先将Set
转换为List
。对于大型集,这比配对本身要便宜得多(O(n)
vsO(n*n)
)。
https://code.google.com/p/combinatoricslib/简单组合部分说明了这个工具的用法。两种元素的组合会产生你想要的效果。
// Create the initial vector
ICombinatoricsVector<String> initialVector = Factory.createVector(
new String[] { "red", "black", "white", "green", "blue" } );
// Create a simple combination generator to generate 3-combinations of the initial vector
Generator<String> gen = Factory.createSimpleCombinationGenerator(initialVector, 3);
// Print all possible combinations
for (ICombinatoricsVector<String> combination : gen) {
System.out.println(combination);
}
问题内容: 我将通过jsoup连接到一个url并获取它的所有内容,但问题是,如果我选择喜欢, 它返回一个元素,但是我想获取页面中的所有元素,例如,一个一个地迭代它们, 如果我选择使用body,我会在一行中得到结果,例如, 相反,我想选择所有元素并逐个迭代并产生如下结果: 使用jsoup可以吗? 谢谢, 卡尔提克 问题答案: 您可以使用选择器选择文档的所有元素,然后使用分别获取每个元素的文本。
问题内容: 我有这个桌子; 我希望选择这样的行: 任一或= 。 另一个字段应该是唯一的。 即我想从表中选择唯一,或者我需要以下结果: 怎么做? 为什么?因为我希望构建一个类似于Facebook的收件箱,在该收件箱中,已发送和已接收的消息将被聚合,而此查询是迄今为止的瓶颈。 我正在使用Rails 3.2和Postgres 9.3。 问题答案: (not )从结果中删除重复项,从而不必要。您可能希望在
我正在创建一个纸牌游戏,并希望迭代所有可能的纸牌组合。 例如(红心A,红心2),(红心A,黑桃2),(红心A,梅花2)等 我在用Java做这个 目前我有这个: 首先,我有 这是一副包含所有卡片的牌。然后我创建一个 现在我想遍历所有没有重复的卡片。 然而,我得到了一个。有人能给我一些关于如何做得更好的提示吗?
假设我有一个由n个字符串列表组成的列表: result->包含所有输出列表(所有组合) current->是当前的组合 用上述相同示例调用此函数时的输出:
问题内容: jQuery.unique允许您获取数组的唯一元素,但是文档说该函数主要供内部使用,并且仅对DOM元素起作用。另一个SO响应说该函数可以在数字上使用,但是此用例不一定是将来的证明,因为在文档中未明确说明。 鉴于此,是否存在“标准” jQuery函数,用于仅访问数组中的唯一值(特别是整数之类的基元)?(显然,我们可以使用函数构造一个循环,但是我们是jQuery的新手,并且想知道是否为此使
问题内容: 在最近的一次采访中有人问我这个问题。 您将获得一个包含一百万个元素的数组。除了一个元素外,所有元素都是重复的。我的任务是找到独特的元素。 我的做法是要经过在整个数组循环,然后创建一个索引作为数组中和的数组中出现的次数。然后再次遍历我们的地图,并返回值为1的索引。 我说我的方法会花费时间。面试官告诉我要以低于复杂度的方式对其进行优化。我说过,我们不能,因为我们必须遍历具有一百万个元素的整