LinkedHashSet 从某个元素开始循环 (Java)。
LinkedHashSet loop from some element onwards (Java).
我在我的代码中使用了 LinkedHashSet,在某些时候我需要迭代 运行 HashSet 的所有元素中的一个算法,从一个元素开始。
所以如果我的集合包含数字 1,2,3,4,5。我想从 3 而不是 1 开始循环。这可能吗?
谢谢。
您可以将其复制到 ArrayList
so that you might use subList(int, int)
; and then you might use a for-each
loop 之类的
HashSet<Integer> set = new LinkedHashSet<>(Arrays.asList(1, 2, 3, 4, 5));
for (Integer i : new ArrayList<>(set).subList(2, set.size())) {
System.out.println(i);
}
或者,您可以使用相同的方法直接获得一个 Iterator
like
HashSet<Integer> set = new LinkedHashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Iterator<Integer> iter = new ArrayList<>(set).subList(2, set.size())
.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
两者输出(请求的)
3
4
5
如果您使用 TreeSet
而不是 LinkedHashSet
,则可以使用方法 tailSet()
。如果您这样使用它:mySet.tailSet(3)
,它将 return 您的集合的 view(这也是一个 Set
),仅包含 3, 4, 5
.
'start the loop from 3'有两种可能的含义。您可能意味着您只需要列表中等于或大于 3 的项目。或者你可能意味着你想在按特定顺序排序时跳过前 2 个项目。我建议您在代码中明确说明您的意思。如果您正在使用 Java 8,那么流提供了一个很好的机制来做到这一点:
myHashSet.stream()
.sorted(myComparator)
.skip(2)
.collect(Collectors.toList());
或
myHashSet.stream()
.filter(n -> n >= 3)
.collect(Collectors.toList());
我在我的代码中使用了 LinkedHashSet,在某些时候我需要迭代 运行 HashSet 的所有元素中的一个算法,从一个元素开始。
所以如果我的集合包含数字 1,2,3,4,5。我想从 3 而不是 1 开始循环。这可能吗?
谢谢。
您可以将其复制到 ArrayList
so that you might use subList(int, int)
; and then you might use a for-each
loop 之类的
HashSet<Integer> set = new LinkedHashSet<>(Arrays.asList(1, 2, 3, 4, 5));
for (Integer i : new ArrayList<>(set).subList(2, set.size())) {
System.out.println(i);
}
或者,您可以使用相同的方法直接获得一个 Iterator
like
HashSet<Integer> set = new LinkedHashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Iterator<Integer> iter = new ArrayList<>(set).subList(2, set.size())
.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
两者输出(请求的)
3
4
5
如果您使用 TreeSet
而不是 LinkedHashSet
,则可以使用方法 tailSet()
。如果您这样使用它:mySet.tailSet(3)
,它将 return 您的集合的 view(这也是一个 Set
),仅包含 3, 4, 5
.
'start the loop from 3'有两种可能的含义。您可能意味着您只需要列表中等于或大于 3 的项目。或者你可能意味着你想在按特定顺序排序时跳过前 2 个项目。我建议您在代码中明确说明您的意思。如果您正在使用 Java 8,那么流提供了一个很好的机制来做到这一点:
myHashSet.stream()
.sorted(myComparator)
.skip(2)
.collect(Collectors.toList());
或
myHashSet.stream()
.filter(n -> n >= 3)
.collect(Collectors.toList());