Lista w liście [inne rozwiązanie]

0

Mam taki oto problem.
Chciałbym stworzyć taką sobie małą bazę danych.
Która składa się z 2 list.
1 lista to imię.
2 lista to wpłaty.

Wpłat może być kilka. Więc tutaj nasunął mi się pomysł by utworzyć listę w liście. Jednak jest to chyba nie wykonywalne gdy np tworzę 100 obiektów. Musze utworzyć 100-elementową listę . Jak inaczej mogę to rozwiązać ?

0

Nie bardzo rozumiem co chcesz osiągnąć, ale może stworzyć listę obiektów? Nie byłoby wygodniej?

0
  1. Chcesz stworzyć bazę danych czy program ? :>
  2. Stworzenie listy list jest jak najbardziej możliwe w każdym normalnym języku programowania
0
[losowa nazwa] napisał(a):
  1. Chcesz stworzyć bazę danych czy program ? :>
  2. Stworzenie listy list jest jak najbardziej możliwe w każdym normalnym języku programowania

Zwykły program dla ćwiczeń.

Może postaram się bardziej sprecyzować o co mi chodzi.
Mam listę [wpłaty]. Każdy element listy odpowiada za miesiąc.
Przykładowo.
wpłata[1] - styczeń
wpłata[2] - luty
itp.
Wpłat w danym miesiącu może być kilka.
Załóżmy że do w styczniu było 4 wpłat.
Moim pomysłem że do wpłata[1] dodam kolejną listą w której każdy element będzie odpowiadał za wpłatę.
Wyglądało by to mniej więcej tak
wpłata[1] { przelew[1], przelew[2], przelew[3] ... } (wpłaty w styczniu)
wpłata[2] { przelew[1], przelew[2], przelew[3] ... } (wpłaty w lutym)

Chyba jednak ten pomysł jest zły ponieważ po każdym przejściu do kolejnego elementu listy [wpłata] muszę utworzyć listę [przelew]. Dlatego szukam innego rozwiązania. Mam nadzieję że teraz jest bardziej zrozumiale ;p

0

Człowieku... skoro miesięcy jest 12, to robisz sobie tablicę o rozmiarze 12. Jakiego typu ? Ano typu listowego. Co lista ma przechowywac ? Ano wysokość wpłaty. Zatem:

ArrayList<Integer>[] wplaty = new ArrayList[12];
for (int i = 0; i < 12; i++) wplaty[i] = new ArrayList<Integer>();

// dodawanie wplaty w marcu
wplaty[2].add(35);
// wypisywanie wplat z czerwca
for (int i = 0; i < wplaty[5].size(); i++) {
    System.out.println(wplaty[5].get(i));
}
0

O coś takiego mi chodzi ale ... zakładamy że jest 12 miesięcy. A przecież może być styczeń rok 2001 i styczeń roku 2002. Czyli nieokreśloną wielkość.
I o to głowinie mi chodzi że wielkość tej tablicy jest "nieograniczona". I z tym mam problem.

1

Więc:


HashMapa kluczowana po roku (Integer) a wartościami są:
HashMapa kluczowana po miesiącu (Integer) a wartościami są:
ArrayLista Integerów - wpłat.

Zatem:

HashMap<Integer, HashMap<Integer, ArrayList<Integer>>> dane = ...

ArrayList<Integer> wplaty_01_2012 = dane.get(2012).get(1);
for (Integer wplata : wplaty) {
  System.out.println(wplata);
}

Dodanie nowego wpisu:

int rok = 2011;
int miesiac = 05;
int kwota = 100;

if (!dane.containsKey(rok)) {
  dane.put(rok, new HashMap<Integer, ArrayList<Integer>>());
}

HashMap<Integer, ArrayList<Integer>> temp = dane.get(rok);

if (!temp.containsKey(miesiac)) {
  temp.put(miesiac, new ArrayList<Integer>());
}

ArrayList<Integer> wplaty = temp.get(miesiac);

wplaty.add(kwota);

1 użytkowników online, w tym zalogowanych: 0, gości: 1