私は、Carという名前のクラスと、BMW、FORDなどの車を拡張するサブクラスの束があるとします。だから私は車のこのArrayListを持って、私はこのArrayList内の各オブジェクトを別のArrayLists、各ブランドごとに1つに分けようとしています。私はインスタンスの使用は良い練習ではないと聞きましたので、私はこれをどうやって行うのか分かりません。サブクラスを同じ抽象クラスから区別する方法
0
A
答えて
0
この多型性の使い方をどうやって解決するのか分かりませんが、代わりにinstanceof
を使用せず、Map
を使用して、車のクラスと車のリストを引数として使用することをお勧めします。あなたを助ける
private static Collection<List<Car>> separateCars(List<Car> cars) {
Map<Class, List<Car>> result = new HashMap<>(); // creating the empty map with results
for (Car car : cars) { // iterating over all cars in the given list
if (result.containsKey(car.getClass())) { // if we have such car type in our results map
result.get(car.getClass()).add(car); // just getting the corresponding list and adding that car in it
} else { // if we faced with the class of the car that we don't have in the map yet
List<Car> newList = new ArrayList<>(); // creating a new list for such cars
newList.add(car); // adding this car to such list
result.put(car.getClass(), newList); // creating an entry in results map with car's class and the list we just created
}
}
return result.values(); // returning only the lists we created as we don't need car's classes
}
希望:
この場合、コードは次のようになります。グループ化
-1
のJava 8コレクターはあなたが私がのインスタンスを使用するので、私はこれを行う方法を見当がつかない良い習慣ではないことを聞いた」とはどういう意味ですか
https://www.mkyong.com/java8/java-8-collectors-groupingby-and-mapping-example/
関連する問題
- 1. 抽象クラスを静的にサブクラスに静的にする方法
- 2. 抽象クラスからサブクラスを参照する
- 3. 複数のクラスを同じ関数で区別する方法
- 4. UserControl抽象サブクラスから継承する
- 5. サブクラス化された別の抽象クラスを持つ抽象クラスをサブクラス化することはできますか? (C#)
- 6. 非親クラスから抽象クラスを呼び出す方法
- 7. .NET私は、次の抽象クラスを持つ抽象クラスから
- 8. 抽象クラス対抽象クラス
- 9. 抽象クラスが別の抽象クラス問題
- 10. 抽象Javaクラス内のサブクラスへの参照を取得する方法
- 11. 抽象クラスで抽象関数を呼び出す方法
- 12. 抽象クラスとサブクラスからオブジェクトの配列を作成するjava
- 13. 抽象クラス内のコールバックから抽象メソッドを呼び出す
- 14. Java:抽象クラスの特定のサブクラスをインスタンス化するメソッド
- 15. 抽象クラスと非抽象クラスから派生する相違点
- 16. 抽象クラスから継承するJava
- 17. 抽象クラスから継承するケースクラス
- 18. 非抽象クラスを抽象クラスで非抽象メソッドに値を代入する
- 19. Java抽象クラス、抽象コンストラクタ
- 20. 基本抽象クラスDjangoのサブクラスからフィールドを削除します
- 21. 2つのほぼ同じメソッドを持つJava抽象クラス
- 22. 抽象コンストラクタを実行してからサブクラスにキャストする
- 23. 抽象ベースクラスのサブクラスを複製する
- 24. 同じコードを書き直すのを避けるために、抽象クラスは良い方法ですか?
- 25. Java:ラップされたクラスをインスタンス化する抽象クラスのサブクラスのラッパークラスを作成する方法
- 26. データベースの抽象基本クラスとサブクラスをモデル化します
- 27. Scala:クラス型パラメータが抽象サブクラスを継承しています
- 28. 抽象クラスでの出力方法
- 29. 抽象クラスから継承するクラスをユニットテストする
- 30. 抽象クラスからクラスコンストラクタを派生
上記の場合に役立ちます。 "基本クラスにModelというプロパティを追加できます。次に、このプロパティを使用してリストからオブジェクトを抽出します。私は個人的にmyobjects.OfTypeのようなものを行います。()... –
Seb
[訪問者パターンを実装することができます](https://stackoverflow.com/questions/29458676/how-to-avoid-instanceof-when-implementing-factory -design-pattern/29459571#29459571) –
@Seb私の先生は、のインスタンスを使用して私たちのファンではありません。私はプロパティを追加することを考えましたが、この問題を解決するために多態性を使用したいと考えています。 –