Witam, mam pytanie - przerabiam kolejny "obszar" javy - kontenery i trafilem na ponizszy kod:
public class AssociativeArray<K,V> {
private Object[][] pairs;
private int index;
public AssociativeArray(int length) {
pairs = new Object[length][2];
}
public void put(K key, V value) {
if(index >= pairs.length)
throw new ArrayIndexOutOfBoundsException();
pairs[index++] = new Object[]{ key, value };
}
@SuppressWarnings("unchecked")
public V get(K key) {
for(int i = 0; i < index; i++)
if(key.equals(pairs[i][0]))
return (V)pairs[i][1];
return null; // Did not find key
}
public String toString() {
StringBuilder result = new StringBuilder();
for(int i = 0; i < index; i++) {
result.append(pairs[i][0].toString());
result.append(" : ");
result.append(pairs[i][1].toString());
if(i < index - 1)
result.append("\n");
}
return result.toString();
}
public static void main(String[] args) {
AssociativeArray<String,String> map = new AssociativeArray<String,String>(6);
map.put("sky", "blue");
map.put("grass", "green");
map.put("ocean", "dancing");
map.put("tree", "tall");
map.put("earth", "brown");
map.put("sun", "warm");
try {
map.put("extra", "object");
} catch(ArrayIndexOutOfBoundsException e) {
print("Too many objects!");
}
print(map);
print(map.get("ocean"));
}
}
Czy ktos moglby mi pomoc troche polapac sie w tym?
Nie jest dla mnie jasne jak dziala metoda put, linia pairs[index++] = new Object[]{ key, value };. Pobieramy 2 argumenty typu K i V, sprawdzamy dlugosc, ale potem co robimy? Wstawiamy do dwuwymiarowej tablicy typu Object o nazwie pairs, na pozycji index++ nowa tablice typu Object, zainicjowana argumentami metody? Jak to dziala?
Metoda get jest bardziej zrozumiala, ale nie moge powiedziec, ze jestem na 100% pewien, ze rozumiem.
Moglby ktos napisac po kolei co sie dzieje, np krok po kroku?