2015-06-04 2 views
-1

Я хочу, чтобы объединить статический массив (например, int[]) с динамическим массивом таких как ArrayList<String>Объединяя статический массив с динамическим ArrayList

К примеру, я знаю, что количество домов: 10 (фиксированный), но Я не знаю графа людей, которые живут в доме. Этот счет также будет динамически изменяться, например, List.

Есть ли возможность создать тип данных, который может выполнять оба критерия?

+0

Так что вы хотите массив ArrayList? Что-то вроде этого вопроса: http://stackoverflow.com/questions/8559092/create-an-array-of-arraylists – Gosu

+0

спасибо, он работает;) – user3875103

ответ

0

ArrayList - динамическая структура данных, поддерживаемая массивом. Мне кажется, что у вас может быть массив House, где у каждого House есть поле List<Human>.

House[] homes = new House[10]; 

и класс как

class House { 
    private List<Human> people = new ArrayList<>(); 

    public List<Human> getPeople() { 
     return people; 
    } 
} 

затем, чтобы получить общее количество людей, живущих в этих домах вы могли бы использовать что-то вроде

int count = 0; 
for (House h : homes) { 
    count += h.getPeople().size(); 
} 
+0

'Arrays.stream (homes) .mapToInt (h -> h .getPeople(). size()). sum(); ' – Oli

0

Это работает для меня:

ArrayList<String>[] house = new ArrayList[15]; 
for (int x = 0; x < house.length; x++) { 
    house[x] = new ArrayList<String>(); 
} 
house[0].add("Pete"); 
house[0].add("Marta"); 
house[1].add("Dave"); 
System.out.println(house[0]); 
System.out.println(house[1]); 

out:

[Pete, Marta] 
[Dave] 

..Я использовал Create an Array of Arraylists

+0

https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays стоит проверить – EpicPandaForce

+0

Эта первая строка, безусловно, не будет компилироваться ... – Oli

+0

Первая строка компилируется для меня как есть. – bhspencer

Смежные вопросы