2016-06-28 9 views
-1

私は人のarraylistを持っていますArrayList<Person>。それぞれの人は名前と年齢をランダムに取得します。その中でArrayListPersonですが、ラムダ式を使って18歳で除外しました。arraylistの各人のスレッドを作成する方法

私の質問は、ArraylistPersonのフィルタごとにThreadを作成するにはどうすればよいですか。

マイコード:Person implements Runnableのアイデアは非常に奇妙に聞こえることを私は大ジェームズに同意

public class Person implements Runnable 
{ 
    private String name; 
    private int age; 

    public Person(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 

    public void run() { 
     // to fill up later 
    } 
} 

public class Main { 
     private static int nameCount = 1; 
     public static List<Person> list; 

     public static void main(String[] args) { 
      list = new ArrayList<Person>(); 
      for (int i = 0; i < 5; i++) { 
       list.add(new Person(getPersonName(), getPersonAge()); 
      } 
      list.removeIf(p -> p.getage().equals(18)); 
      for (Person person : list) { 
       System.out.println(persion); 
      } 
     } 

     public static String getPersonName() { 
      String nameto = "PERSON" + String.valueOf(nameCount); 
      nameCount++; 
      return nameto; 
     } 

     public static int getPersonAge() { 
      Random ran = new Random(); 
      int ageperson = ran.nextInt(25) + 1; 
      return ageperson; 
     } 
     //how to make an instance of Thread after filtering the person 
    } 
+6

画像形式のコードは、一般的にあまりうまく受信されません。 – Timo

+1

へようこそ:) @TimoStaの提案に続いて、あなたの質問を編集し、スクリーンショットを投稿する代わりにあなたのコードをコピー/貼り付けてください。 –

+0

「人がRunnableを実装する」という考え方は非常に奇妙に聞こえます。人を「走らせる」ことは何を意味しますか?あなたがバックグラウンドスレッドで人にやりたいことが複数ある場合、それはどういう意味ですか? –

答えて

0

しかし、あなたはStreamAPIと方法foreachを使用することができ、リスト内の各項目について、いくつかのロジックを実装する方法、私はまた、この方法filter

を使用することをお勧めしますので、結果は次のようになります。

list.stream() 
    .filter(person -> person.getage() == 18) 
    .forEach(person -> new Thread(person).start()); 
+0

これをループで囲む必要がありますか?それぞれの人のためのスレッドを作成するには? – ilovejavaAJ

+0

いいえ、あなたは必要ありません。 メソッド 'forEach()'は、ストリーム内の各要素のロジックを呼び出します。 したがって、各要素がスレッドを作成され、メソッド 'start()'が呼び出されます。 –

関連する問題