0

私の Arraylist には 9 人が含まれています。各人物には、String 型の name 値、int 型の age 値、および Enum 型 (TV、SMARTPHONE、CAR) の値があります。製品名に従って名前を見つけるメソッドを実装する必要があります。arrayListName に SMARTPHONE が含まれている場合は、すべての名前がスマートフォンで返されます。

public void showByProduct(Product SMARTPHONE) {



    public void showByProductName(Product SMARTPHONE) {

            if (arrayListName.contains(SMARTPHONE))

                System.out.println("found"+nameofowner);
            else {
                System.out.println("not found");
            }
        }
4

2 に答える 2

2

を反復処理する必要がありList、各 Person について、そのproductフィールドにメソッドで渡した値があるかどうかを確認します。

さらに、メソッドにもう 1 つListローカルにする必要があります。これには、Personに一致するを追加Product Nameし、最後に を返しListます。

public List<Person> showByProductName(Product product) {

    List<Person> localList = new ArrayList<Person>();

    for (Person person: persons) {   // persons is the original List.
        if (person.getProduct() == product) {
            localList.add(person);
        }
    }

    return localList;
}

そして、このメソッドを呼び出す場所で、戻り値をList参照に格納します。 -

List<Person> result = showByProductName(Product.SMARTPHONE);
System.out.println(result);

enumを使用して 2 つの値を比較できることに注意してください==。はenumですsingleton

PS: -パラメータ名を のようにしないでくださいSMARTPHONE。列挙値です。また、Java Naming Conventionに従って、変数名は小文字のアルファベットで始まり、その後に続く必要がありますcamelCasing

于 2013-01-18T16:00:06.553 に答える
0
for (Person p : arrayListName){
    if(p.geProduct()==product)
        System.out.println("Found : " + p.name());
}

ただし、これは本当にクールではありません。列挙型で人物をソートする必要があると思います。

于 2013-01-18T16:08:46.937 に答える