2012-01-16 5 views
7

List<Object>を、最初の20個のエントリに対してのみ、単純List<Object>から作成したいと考えています。エントリの制限付きのJavaリストをコピーする

//my first array 
List<Staff> staffs = new ArrayList<Staff>(); 

staffs.add(new Staff(...)); 
staffs.add(new Staff(...)); 
staffs.add(new Staff(...)); 
staffs.add(new Staff(...)); 


List<Staff> second = magicMethodForClone(staffs,20); 

magicMethodForCloneのようなメソッドが存在するかどうかを知りたいと思います。

はあなたのリストが20個の未満の要素が含まれている場合

答えて

11
List<Staff> second = new ArrayList<Staff>(staffs.subList(0, 20)); 
+0

ありがとうございます。私はsubList関数を知らなかった。 – johann

21

List.subList(0, 20)は、例外がスローされます、ありがとうございました。

のJava 8で

あなたはStream.limit()を使用することができます。

List<Staff> second = staffs.stream().limit(20).collect(Collectors.toList()); 

のJava 7以下の場合:

あなたは利用可能なすべての要素を取得するにはグアバのIterables.limit()を使用することができますがありません20以上:

List<Staff> second = Lists.newArrayList(Iterables.limit(staffs, 20)); 
+0

あなたのコメントありがとうございます〜私は次回これを試してみましょう! – johann

関連する問題