List
をソートするためにCollections.sort(playersList);
を使用しました。したがって、playersList
は現在ソートされていると思います。しかし、どのようにしてリストの最初の要素を取得できますか? playersList[0]
動作しません。
_playersList.get(0)
_
Javaの演算子ポリモーフィズムは限られています。したがって、配列インデックス演算子(_[]
_)ではなく、List
オブジェクトに対してget()
メソッドを使用します。
Javaの配列とは少し異なる方法でリストにアクセスする必要があります。詳細については、List
インターフェイスの javadocs を参照してください。
_playersList.get(0)
_
ただし、playersList
で最小の要素を検索する場合は、並べ替えてから最初の要素を取得しないでください。これは、最小の要素を見つけるためにリストを1回検索するのに比べて、実行に非常に時間がかかります。
例えば:
_int smallestIndex = 0;
for (int i = 1; i < playersList.size(); i++) {
if (playersList.get(i) < playersList.get(smallestIndex))
smallestIndex = i;
}
playersList.get(smallestIndex);
_
上記のコードは、O(n)
timeではなくO(n log n)
で最小の要素を見つけます。
ArrayList
を使用するには、リストのタイプによって異なります。
list.get(0);
LinkedList
の使用:
list.getFirst();
array
アプローチが好きな場合:
list.toArray()[0];
Java 8ストリーム)を使用すると、リストをストリームに変換し、.findFirst()
メソッドを使用してリストの最初の項目を取得できます。
_List<String> stringsList = Arrays.asList("zordon", "alpha", "tommy");
Optional<String> optional = stringsList.stream().findFirst();
optional.get(); // "zordon"
_
.findFirst()
メソッドは、文字列値を含む場合と含まない場合があります(stringsList
が空の場合、値を含まない場合があります) オプション を返します。
次に、オプションからアイテムをアンラップするには、.get()
メソッドを使用します。
マシューの答え は正しい:
list.get(0);
試したことを行うには:
list[0];
devoxx会議http://img718.imageshack.us/img718/11/capturadepantalla201003cg.png
Mark Reinholdによる興味深い プレゼンテーション Java 7
Parleysサイトは現在ダウンしているようです。後で試してください:(
リストを並べ替えて最初の要素(O(N log N)
)を取得する代わりに、リストの最小値を取得する場合は、min
を使用して線形時間で実行できます。
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
それは最初はひどく見えますが、以前の質問を見ると、List<String>
。要するに:min
はそれで動作します。
長い答え:ジェネリック型制約のsuper
とextends
のすべては、Josh BlochがPECS原則と呼んでいるものです(通常、Arnoldの写真の横に表示されます-私はキッドではありません) !)
プロデューサーの拡張、コンシューマーのスーパー
型の安全性を維持しながら制約がより柔軟になるため、基本的にジェネリックがより強力になります(参照: 「スーパー」と「拡張」の違いJavaジェネリック) )
コレクションがList
でない場合(したがってget(int index)
を使用できない場合)、反復子を使用できます。
Iterator iter = collection.iterator();
if (iter.hasNext()) {
Object first = iter.next();
}
public class Main {
public static List<String> list = new ArrayList();
public static void main(String[] args) {
List<Integer> l = new ArrayList<>();
l.add(222);
l.add(100);
l.add(45);
l.add(415);
l.add(311);
l.sort(null);
System.out.println(l.get(0));
}
}
l.sort(null)なしで222を返しました
l.sort(null)が45を返す