Java - baza danych

Java - baza danych
MA
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:72
0

Mam do zrobienia takie zadanie. Czy ktoś ma jakieś wskazówki? Za nic nie wiem jak się za to zabrać. ;)
Zaimplementuj klasę DataFrame, która pozwalać będzie na przechowywanie dowolnej ilości danych, dowolnego typu w formacie kolumnowym (analogicznie jak w bazie danych).
Kolumny powinny być przechowywane jako ArrayList
Klasa powinna posiadać metody:
size() – zwracającą ilość wierszy
iloc(int from, int to) – zwracającą nową DataFrame z wierszami z podanego zakresu
get(String colname) – zwracającą kolumnę o podanej nazwie
Nawet najmniejsza podpowiedź jest dla mnie cenna.

aliszja
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 2 lata
  • Postów:30
1

Tak na szybko i na kolanie: W ArrayList potrzebujesz mieć dane dla kolumny o jakiejś nazwie, która jest Stringiem (wnioskuję po tym, że masz mieć w klasie metodę, która zwraca dane dla kolumny o podanej nazwie w Stringu). Potrzebujesz więc jakiejś Mapy: nazwa kolumny -> zbiór danych dowolnego typu dla kolumny. Ilość wierszy w "bazie" to w zasadzie rozmiar najdłuższej z kolumn.

edytowany 2x, ostatnio: aliszja
MA
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:72
0

Mam coś takiego:

Kopiuj
public class DataFrame {
    String[] nazwyKolumn;
    String[] typy;
    Map<String, ArrayList<>> baza = new HashMap<String, ArrayList<>>();
    public DataFrame(String [] _nazwyKolumn, String[] _typy){
        nazwyKolumn=_nazwyKolumn;
        typy=_typy;
        int i;
        for(i=0; i<nazwyKolumn.length; i++){

        }

    }

}
Kopiuj
import java.util.*;
import java.util.ArrayList;
import java.io.;

public class DataFrameProgram {
    public static void main(String[] args){

    }
}

i chyba wypadałoby to jakoś poiterować i wstawić do mapy wartości. Czy ktoś mógłby mi pomóc?

MA
ta pętla for chyba nie za bardzo tam się sprawdzi
aliszja
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 2 lata
  • Postów:30
1

W zadaniu nie jest powiedziane, w jaki sposób użytkownik klasy ma dodawać dane do tej "bazy". Więc w sumie, proponowałabym zrobić konstruktor, w którym po prostu podaje się tę HashMapę z zawartością bazy, a jeszcze dodatkowo metodę, która pozwala dodać jedną kolumnę, np. addColumn(String nameOfColumn, ArrayList data);

Przy okazji, cztery sugestie:

  1. W IntelliJ ta linijka: Map<String, ArrayList<>> baza = new HashMap<String, ArrayList<>>(); się świeci, oczekując podania typów dla ArrayListy, jak nie chcesz ich podawać, to wywal te nawiasy trójkątne.
  2. Nazwy metod w zadaniu masz podane po angielsku, klasa nazywa się po angielsku, więc pisz po angielsku.
  3. W Javie według konwencji wszystkie nazwy zmiennych, metod lecą camel case'em z małej litery, bez podkreślników.
  4. Po co Ci ta tablica Stringów 'typy'?
edytowany 2x, ostatnio: aliszja
MA
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:72
0

Tworzenie nowego obiektu ma wyglądać tak:

Kopiuj
DataFrame df = new  DataFrame(new String[]{"kol1","kol2","kol3"}, new String[]{"int","double","MyCustomType"});
edytowany 2x, ostatnio: maxmiks
aliszja
Warto było o tym wspomnieć na początku :)
TY
Serio typy w stringu?!
aliszja
@Tyvrel: Jeśli to narzuca treść zadania, to nie wina OP, ale fakt, to brzydkie strasznie jest.
TY
@aliszja: Toż to ja nie krytykuję OP, tylko treść zadania =)
MA

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.