6

リストをループして特定のエントリを見つけ、それを変数に割り当てて、後で削除しようとしています。説明するよりもデモを行う方が簡単です。

ArrayList<Example> list1 = populate();

Example ex1 = list1.get(0);
Example ex2 = ex1;
list1.remove(ex2);

これはJavaがポインタを処理できないことに関係している可能性が高いことはわかっていますが、実行可能な解決策は素晴らしいでしょう.

編集:詳しく説明すると、これは完全なものではなく、私のコードの簡単な例です。私がやっていることは、リストを反復処理して最小の 10 の数字を見つけることです。私のテクニックは、リストを調べて最低のものを見つけて別のリストに追加し、元のリストからその番号を削除して繰り返すことです. しかし、私のリストは、整数のリストではなく、内部に int 値を持つオブジェクトで構成されています。

for(0 to 9){
    for(0 to list.size){
        if(list.get(x) < smallest)
            smallest = list.get(x)
    }
    smallestList.add(smallest);
    list.remove(smallest)
}
4

3 に答える 3

1

オブジェクトを並べ替えたい場合...

Example e;
int min=-1; // assuming the list has +ve numbers only
for (Example elem : yourList)
{
if ( elem.gtVaribale() <= min ) //assuming you have variable field in your object
{
  e = elem;
  min = elem.getVariable();
}
}
yourList.remove(e);

//repeat this for remaining elements of the list

//you can create another sorted list, and do sortedList.add(e), so that sortedList
//have objects in ascending order (of the variable you want to sort) of objects you had in yourList

これは単なる疑似コードであり、コンパイルしていません。

于 2013-05-03T11:58:58.757 に答える
0

ここでは、クラス Example の同等のメソッドをオーバーライドする必要があります。e 変数をリストの要素と比較して削除する方法をコンパイラに知らせる必要があります。

于 2013-05-03T12:25:56.443 に答える