Dynamiczne dodawanie/usuwanie obiektow bez wbudowanych bibliotek

Odpowiedz Nowy wątek
2018-11-24 19:22

Rejestracja: 2 lata temu

Ostatnio: 1 rok temu

0

Witam,

dostalem pewny problem do rozwiazania i jedna z rzeczy nad ktora sie zastanawiam jest jak dynamicznie przechowywac wiele obiektow danej klasy, bez kolejek/list/stosów z dodatkowych bibliotek.

np
mam klase Kient z konstruktorem:
Klient(int ID, int numer, ...){
...
}

I w Main'ie gdzieś tam sa metody
dodajNowegoKlienta(id,numer, ...) => new Klient(id, numer,...)
usunKlienta(id)

i powiedzmy ktos moze sobie dodawac tych klientow ile wlezie + w dowolnym momenciew usuwac klienta o danym ID

Jak to przechowywac? Nie moge uzywac ŻADNYCH biblotek dodatkowych. tylko podstawowe petle, tablice etc.
w tablicach musze znac ilosc elementow etc, a jedyne co mi przychodzi do glowy to przepisywanie aktualnej tablicy Klientow o dlugosci X do tempa, zastepywanie jej tablicą o wielkosci X+1. zapelnianie z tempa + dodawanie dodatkowego elementu, ale czuje ze nie tędy droga.

Proszę o pomoc :)

edytowany 2x, ostatnio: Kobez Kobez, 2018-11-24 19:25

Pozostało 580 znaków

2018-11-24 19:29

Rejestracja: 3 lata temu

Ostatnio: 11 godzin temu

0

W mapie :)
Ba, utwórz sobie interfejs z podstawowymi metodami typu findById, findByName, remove, getAll i zrób implementację tzw. InMemory bazując oczywiście na mapie

edytowany 1x, ostatnio: Rizorz, 2018-11-24 19:32

Pozostało 580 znaków

2018-11-24 19:36

Rejestracja: 2 lata temu

Ostatnio: 1 rok temu

0
Rizorz napisał(a):

W mapie :)
Ba, utwórz sobie interfejs z podstawowymi metodami typu findById, findByName, remove, getAll i zrób implementację tzw. InMemory bazując oczywiście na mapie

tj na tablicach samemu sobie zrobic mape? bo nie moge np nic impoertowac z java.util.*, w tym wbudowaną obsluge map:
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

etc, wiec trzeba sobie na tablicach samemu popisac obsluge tego na tablicach?

Pozostało 580 znaków

2018-11-24 19:40

Rejestracja: 3 lata temu

Ostatnio: 11 godzin temu

0

To napisz swoją, tym możesz się wspomóc:
http://www.vogella.com/tutori[...]vaDatastructures/article.html

Pozostało 580 znaków

2018-11-24 19:44

Rejestracja: 2 lata temu

Ostatnio: 1 rok temu

0

dodam żę JEDYNĄ rzeczą ktorą mogę gdziekolwiek zaimportować jest "java.util.Scanner" tylko dlatego ze input do zadania jest wciągany z pliku ;)

Rizorz napisał(a):

To napisz swoją, tym możesz się wspomóc:
http://www.vogella.com/tutori[...]vaDatastructures/article.html

Dzięki! w takim razie tak spróbuje

@Edit
ale widze ze są tam
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

wiec to tez trzeba ominąć...

edytowany 1x, ostatnio: Kobez Kobez, 2018-11-24 20:12

Pozostało 580 znaków

2018-11-25 09:34

Rejestracja: 3 lata temu

Ostatnio: 11 godzin temu

Przy metodzie keySet na upartego możesz zwrócić tablicę kluczy, wtedy Set i HashSet wylatuje z importów.
Jeszcze kwestia rozmiaru Twojej mapy, tu wychodzi problem tablic - mają stały rozmiar. Dlatego w tym przypadku jak tablica się zapełni, tworzona jest nowa z dwukrotnie większym rozmiarem, a obiekty są do niej przenoszone. Tadam - masz dynamiczną mapę. Nie możesz używać tego importu, napisz własną implementację metody copyOf :)

Pozostało 580 znaków

2018-11-25 11:29

Rejestracja: 6 lat temu

Ostatnio: 6 godzin temu

Lokalizacja: Warszawa

0

Ja bym stworzył jeszcze taki obiekt pośredni Entry<K, V> i wtedy możesz mieć tablice Entries<K, V>[] . Wersja bardziej hardkorowa: zrób drzewo binarne (jeśli id to int to będzie lajtowo). Będzie wolniejszy zapis, ale czytanie moze być szybsze (to zależy jak powstawiasz elementy)


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
edytowany 1x, ostatnio: scibi92, 2018-11-25 11:32
Przecież to się nie skompiluje bez refleksji przez generyczną tablicę. - Michał Sikora 2018-11-25 11:53
Można robić rzutowanie :P - scibi92 2018-11-25 13:38

Pozostało 580 znaków

Odpowiedz

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