2

get(0)リストの反復での使用を回避できる方法はありますか?

get(0)リストを反復処理している間は、常に危険を伴う使用になります。

このリストには、オブジェクトが1つしかないことは確かです。

get(0)(PSリストの反復での使用を避けるように、最後のマネージャーがいつも私に言ったことを覚えています。)

4

3 に答える 3

9

「危険」とはどういう意味かは明確ではありませんが、Guavaの使用を検討することをお勧めしますIterables.getOnlyElement

List<String> foo = getListFromSomewhere();
String bar = Iterables.getOnlyElement(foo);

これにより、要素が1つだけであることが予想されることが明確になります。要素がないと思われる場合は、デフォルト値を指定できるオーバーロードを使用できます。

そうすれば、要素を要求するときに期待がチェックされます...しかし、他に何を探しているのかは明らかではありません。(あなたはあなたの最後のマネージャーがこれについてあなたに警告したことを覚えています-しかしあなたは彼があなたに警告した理由を覚えていますか?)

于 2012-08-06T18:00:47.800 に答える
2

編集:リストに項目が1つしかないことに気づかず、質問を誤解しました。私のオプションはまだ機能しますが、実際には必要ありません。get(0)ただし、単一の要素を持つリストが存在することが前提条件である場合に使用することの危険性については疑問があります。

いくつかのオプションがあります。

1つ目は、for-eachループを使用してループにオブジェクトを取得させることです。

 for(Object thing : things)

次に、リストを別の形式に変換し、適切な方法でアクセスします。

Object[] thingArray = things.toArray();
for(int i = 0; i < thingArray.length; i++)

3番目はListIteratorを使用することです

ListIterator<Object> thingIterator = things.listIterator();
while(thingIterator.hasNext())
{
    Object thing = thingIterator.next();
于 2012-08-06T18:01:14.757 に答える
0
Object objOne = list.iterator().next();
于 2012-08-06T18:27:54.953 に答える