ArrayList przekazywanie wartości, nie referencji

0

Poniżej kawałek kodu, który oczywiście działa tak jak powinien, a nie tak jak bym chciał :) ponieważ zapisywane są referencje do obiektu sample, a obiekt sample jest zmieniany w pętli. Jak to zrobić, żeby w tablicy samples zapisać kopię ArrayList sample?

Ewentualnie jak to zrobić inaczej - docelowo chcę uzyskać wielowymiarową tablicę, zawierającą serię danych: sensorID i value.

        W1Master w1Master = new W1Master();
        ArrayList<String> sample = new ArrayList<String>();
        ArrayList<ArrayList<String>> samples = new ArrayList<ArrayList<String>>();
        String sensorID;
        String value;
        
        for (TemperatureSensor device : w1Master.getDevices(TemperatureSensor.class)) {
            sample.clear();
            sensorID = "";
            value = "";

            sensorID = device.getName().trim();
            value = Double.toString(device.getTemperature());
            
            sample.add(sensorID);
            sample.add(value);

            samples.add(sample);
        }
0

Myślałem nad tym wcześniej, ale nic mi nie wychodziło, ponieważ otrzymywałem Object zamiast ArrayList. Teraz jest ok, w takim sensie, że działa...ale kompilator w netbeansie zwraca "uses unchecked or unsafe operations".
Z tego co znalazłem to może się zdarzyć w momencie deklaracji ArrayList be podanego typu, a ja nie wiem jak zadeklarować typ <String> w momencie tworzenia klonu.

samples.add((ArrayList) sample.clone());

Czy może tak jest OK i powinienem olać info z netbeansa?

0

Czemu ci nie wychodziło ( bez podania kodu ) odpowiedzą ci na forum wróżbitów.

0

Najprościej będzie po prostu użyć konstruktora kopiującego: public ArrayList(Collection<? extends E> c)

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