.class Lcom/google/common/collect/Iterators$MergingIterator; .super Lcom/google/common/collect/UnmodifiableIterator; .source "Iterators.java" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/google/common/collect/Iterators; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x9 name = "MergingIterator" .end annotation .annotation system Ldalvik/annotation/Signature; value = { "", "Lcom/google/common/collect/UnmodifiableIterator<", "TT;>;" } .end annotation # instance fields .field public final queue:Ljava/util/Queue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Queue<", "Lcom/google/common/collect/PeekingIterator<", "TT;>;>;" } .end annotation .end field # direct methods .method public constructor (Ljava/lang/Iterable;Ljava/util/Comparator;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Iterable<", "+", "Ljava/util/Iterator<", "+TT;>;>;", "Ljava/util/Comparator<", "-TT;>;)V" } .end annotation .line 1 invoke-direct {p0}, Lcom/google/common/collect/UnmodifiableIterator;->()V .line 2 new-instance v0, Lcom/google/common/collect/Iterators$MergingIterator$1; invoke-direct {v0, p0, p2}, Lcom/google/common/collect/Iterators$MergingIterator$1;->(Lcom/google/common/collect/Iterators$MergingIterator;Ljava/util/Comparator;)V .line 3 new-instance p2, Ljava/util/PriorityQueue; const/4 v1, 0x2 invoke-direct {p2, v1, v0}, Ljava/util/PriorityQueue;->(ILjava/util/Comparator;)V iput-object p2, p0, Lcom/google/common/collect/Iterators$MergingIterator;->queue:Ljava/util/Queue; .line 4 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 :cond_0 :goto_0 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result p2 if-eqz p2, :cond_1 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object p2 check-cast p2, Ljava/util/Iterator; .line 5 invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_0 .line 6 iget-object v0, p0, Lcom/google/common/collect/Iterators$MergingIterator;->queue:Ljava/util/Queue; invoke-static {p2}, Lcom/google/common/collect/Iterators;->peekingIterator(Ljava/util/Iterator;)Lcom/google/common/collect/PeekingIterator; move-result-object p2 invoke-interface {v0, p2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z goto :goto_0 :cond_1 return-void .end method # virtual methods .method public hasNext()Z .locals 1 .line 1 iget-object v0, p0, Lcom/google/common/collect/Iterators$MergingIterator;->queue:Ljava/util/Queue; invoke-interface {v0}, Ljava/util/Queue;->isEmpty()Z move-result v0 xor-int/lit8 v0, v0, 0x1 return v0 .end method .method public next()Ljava/lang/Object; .locals 3 .annotation runtime Lcom/google/common/collect/ParametricNullness; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "()TT;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/collect/Iterators$MergingIterator;->queue:Ljava/util/Queue; invoke-interface {v0}, Ljava/util/Queue;->remove()Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/google/common/collect/PeekingIterator; .line 2 invoke-interface {v0}, Lcom/google/common/collect/PeekingIterator;->next()Ljava/lang/Object; move-result-object v1 .line 3 invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_0 .line 4 iget-object v2, p0, Lcom/google/common/collect/Iterators$MergingIterator;->queue:Ljava/util/Queue; invoke-interface {v2, v0}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z :cond_0 return-object v1 .end method