1

コードで LinkedHashSet を使用していますが、ある時点で、HashSet のすべての要素でアルゴリズムを反復して実行する必要があります。

したがって、私のセットに数字 1、2、3、4、5 が含まれているとします。1 ではなく 3 からループを開始したいのですが、可能ですか?

ありがとう。

4

3 に答える 3

4

「ループを 3 から開始する」には 2 つの意味があります。リスト内の 3 つ以上のアイテムのみが必要な場合もあります。または、特定の順序で並べ替えたときに最初の 2 つの項目をスキップすることを意味する場合もあります。コードで意味を明示的に明確にすることをお勧めします。Java 8 を使用している場合、ストリームはこれを行うための優れたメカニズムを提供します。

myHashSet.stream()
    .sorted(myComparator)
    .skip(2)
    .collect(Collectors.toList());

また

myHashSet.stream()
    .filter(n -> n >= 3)
    .collect(Collectors.toList());
于 2015-03-02T02:17:06.510 に答える
2

にコピーして、ArrayList使用できるようにすることができますsubList(int, int)。そして、次のようなfor-eachループを使用できます

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ます

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
于 2015-03-02T02:07:54.460 に答える