2017-01-13 8 views
1

私は3つのクラスを持っています。 ヒーローおよびモンスタークラス文字クラスを拡張します。そして文字クラスはオブジェクトクラスを拡張します。どのようにリストを組み合わせることができますか? - JAVA

私は英雄用とモンスター用の2つのArrayListsを持っています。どのように1つのメソッドで1つのarrayListにそれらを組み合わせることができます。

のJava 8で
ArrayList<Hero> heroes = new ArrayList<Hero>(); 
ArrayList<Monster> monsters = new ArrayList<Monster>(); 

ArrayList<Character> allCharacters = sumArrays(heroes, monsters); 

答えて

3
/** 
* doesn't touch the given lists, creates one new list with all the elements inside the given lists. 
* @param lists lists to add together 
* @param <T> A common class between lists 
*/ 
public static <T> ArrayList<T> sumArrays (ArrayList<? extends T>... lists) { 
    ArrayList<T> summed = new ArrayList<T>(); 
    for (ArrayList<? extends T> list: lists) 
     summed.addAll(list); 
    return summed; 
} 
2

:また

public static <T> List<T> sumArrays(List<? extends T>... lists) { 
    return Arrays.stream(lists).flatMap(List::stream).collect(Collectors.toList()); 
} 

注特定の実施ArrayListに好ましい抽象型List、 - Liskov substitution principleを参照。

関連する問題