コードで LinkedHashSet を使用していますが、ある時点で、HashSet のすべての要素でアルゴリズムを反復して実行する必要があります。
したがって、私のセットに数字 1、2、3、4、5 が含まれているとします。1 ではなく 3 からループを開始したいのですが、可能ですか?
ありがとう。
コードで LinkedHashSet を使用していますが、ある時点で、HashSet のすべての要素でアルゴリズムを反復して実行する必要があります。
したがって、私のセットに数字 1、2、3、4、5 が含まれているとします。1 ではなく 3 からループを開始したいのですが、可能ですか?
ありがとう。
「ループを 3 から開始する」には 2 つの意味があります。リスト内の 3 つ以上のアイテムのみが必要な場合もあります。または、特定の順序で並べ替えたときに最初の 2 つの項目をスキップすることを意味する場合もあります。コードで意味を明示的に明確にすることをお勧めします。Java 8 を使用している場合、ストリームはこれを行うための優れたメカニズムを提供します。
myHashSet.stream()
.sorted(myComparator)
.skip(2)
.collect(Collectors.toList());
また
myHashSet.stream()
.filter(n -> n >= 3)
.collect(Collectors.toList());
にコピーして、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