0

人のarrayListに一致しないFormBeanオブジェクトを捨てたいです。コードが適切にフォーマットされていない場合は申し訳ありません。

私はこのような配列リストを持っています

ArrayList persons = new ArrayList(); 
persons.add("Bill"); 
persons.add("Chuck"); 
persons.add("Marry");

次に、このような別の配列リスト(サイズが等しくない)があります

ArrayList objects = new ArrayList()
for (i++; i < 5; i++) {
    objects.add(FormBean);
}

FormBean クラスは次のようになります。

class FormBean {
    String person;
    int SSN
    String phoneNumber
}

Persons arrayList を FormBean オブジェクトの person と比較し、Persons arrayList に一致しない FormBean オブジェクトを破棄する方法はありますか。

4

4 に答える 4

1
  1. FormBeanリストを反復する
  2. 人のリストに実際の FormBean からの人の名前が含まれている場合
  3. この FormBean を別のリストに保存します。このリストには、削除するすべての FormBean が含まれています。
  4. 最後に、この削除予定リストを繰り返し処理しこのリスト内の FormBeans を元の FormBeans コレクションから削除します。

基準 (personslistperson が含まれる) に一致するすべての FormBeans を新しいコレクションにコピーし、古いコレクションを削除して新しいコレクションを使用します。

于 2012-07-24T20:38:54.010 に答える
0

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collection.html#contains%28java.lang.Object%29を使用

人名の文字列がどこにあるかを返すようにFormBean実装してください。.equals(Object o)FormBean.person.equals(o)o

class FormBean {
    String person;
    int SSN;
    String phoneNumber;

    public boolean Equals(Object o) {
        if (o instanceof String) {
            return this.person.equals(o); // Case sensitive
        } else if (o instanceof FormBean) {
            return this.equals(((FormBeans)o).person);
        }
        return false;
    }
}
于 2012-07-24T20:41:00.347 に答える
0

削除ループは次のようになります。

for (Iterator<FormBean> iterator = objects.iterator(); iterator.hasNext();) {
    FormBean bean = iterator.next();
    if (!persons.contains(bean.getPerson())) {
        iterator.remove();
    }
}

equalsFormBean に実装していることを確認してください。

于 2012-07-24T20:43:38.387 に答える
-1

最初に。これはいったい何なのですか?

ArrayList objects = new ArrayList()
for (i++; i < 5; i++) {
    objects.add(FormBean);
}

私は何ですか?

オブジェクトリストをループして、それぞれをチェックして、他のリストに一致するものがあるかどうかを確認します(List.contains()を参照)http://docs.oracle.com/javase/6/docs/api/java/util /List.html#contains(java.lang.Object ) に一致しないものを削除します。

于 2012-07-24T20:37:39.190 に答える