人生最悪の忘れ物

Javaで、出席番号、名前、性別、得点を入力して、Personクラスのデータa1とa1から女を削除したa2を表示するサンプルコードを作りました。
Selectクラスのmale_onlyメッソドで、a1から女を削除するコードを教えて下さい。

import.java.util.List;
import java.util.ArrayList;
import java.util.Collections;

class Person{
int number; //出席番号
String name; //名前
String sex; //性別
int score //得点

//コンストラクターは省略
//getter,setterは省略

public String toString(){
return Integer.toString(number) + ":"
+ name + ":" + sex + ":" +Integer.toString(score)
}

}

class Main {
public static void main(String[] args) {
List<Person> a1 = new ArrayList<Person>();
a1.add.( new Person(1,"高橋","男,"75));
a1.add.( new Person(2,"田中","女",82));
a1.add.( new Person(3,"小林","男",62));

System.out.println(a1);

//a1のクローンa2を作る
//male_onlyメソッドを呼び出す

Select choice = new Select();
choice.male_only(a2,"男",a1.size());

System.out.println(a2);

}

}

class Select{
public void(メッソドの型)? male_only(Person pr,String sex,int max (引数は?)){

 while( ){

     if(sex != "男"){
       _.remove();
      }

/**メッソドの方向性を書きましたが、ここに、クローンしたa2の参照で、"男"以外を削除させるメッソドの書き方を教えてほしいです。またメッソドの型と引数、戻り値も教えてほしいです。**/

 }

return(戻り値は?) ;

}

A 回答 (1件)

一覧から特定の値を削除するならば、


一覧から特定の値のみ抜き出すメソッドである filter で代用できます。
http://download.java.net/java/jdk9/docs/api/java …

Java のストリーム機能を使っているので、以下のメソッドも併用しましょう。
http://download.java.net/java/jdk9/docs/api/java …
例: 一覧.stream().filter( 特定の値であるか判断するラムダ式 )

終端処理もお忘れなく
例: 一覧.stream().filter( 特定の値であるか判断するラムダ式 ).forEach( 値を出力するラムダ式 );
例: 一覧.stream().filter( 特定の値であるか判断するラムダ式 ).collect(Collectors.toList());
    • good
    • 0
この回答へのお礼

Ogre7077様
回答ありがとうございます。ストリームから使う方法は、残念ながら私には、わかりませんでした。あと、Java9にも対応していないので、そこもこの方法では無理だと思います。

お礼日時:2017/10/18 09:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報