配列で n 番目に大きい数値を返すコードを実装していました。以下は実装したコードです。
public int getNthLargestNum(int [] givenArr, int n){
int nTotal=0;
int nNthNum = -1;
// Remove Duplicates
Set<Integer> o_hs = new TreeSet<Integer>();
for(int insert=0; insert<givenArr.length; insert++)
{o_hs.add(givenArr[insert]);}
Iterator it = o_hs.iterator();
int count=0;
while(it.hasNext()){
if(count == n){
// IF I MOVE THE LINE HERE
// nNthNum = (Integer)it.next();
break;
}
nNthNum = (Integer)it.next();
count++;
}
return nNthNum;
}
配列 givenArr[4,14,4,5,6,8,9] と n=2 を入力すると、上記のプログラムの出力は 5 になりますが、行 nNthNum = (Integer)it.next(); を移動すると、出力は 5 になります。if ループ内では 4 が出力されます。
そのため、常に it.next() を実装する必要があるループを反復処理する方法を知りたいと思っていました。