• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyciąganie obiektów z Mapy po zmiennej id danego obiektu (java)

Object Storage Arubacloud
0 głosów
696 wizyt
pytanie zadane 8 listopada 2017 w Java przez heartagram Obywatel (1,770 p.)

cześć, jak w temacie.Potrzebuje wyciągnąć z mapy: 

 Map<Long, UserMaker> userMakerTest = new HashMap<>();

Utworzony i dodany do kolekcji obiekt np: 

		userMakerTest.put((long) 1, new UserMaker(1,"Jan", "Nowak", 12345,0));
		userMakerTest.put((long) 2, new UserMaker(2,"Janusz", "Kowal", 543321, 0));

Po zmiennej id danego obiektu: 

System.out.println(userMakerTest.get(1));

Ale dostaje false jednak tam są obiekty bo sprawdzałem po:

System.out.println(userMakerTest.isEmpty());

 

Jeszcze klasa UserMaker:

 

package project.emil.lib.model;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class UserMaker {

	private long id;
	private String name;
	private String surname;
	private int NIN;
	private int whatIhave;

	public UserMaker() {

	}

	public UserMaker(long id, String name, String surname, int NIN, int whatIhave) {
		this.id = id;
		this.name = name;
		this.surname = surname;
		this.NIN = NIN;
		this.whatIhave = whatIhave;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSurname() {
		return surname;
	}

	public void setSurname(String surname) {
		this.surname = surname;
	}

	public int getNin() {
		return NIN;
	}

	public void setNin(int NIN) {
		this.NIN = NIN;
	}

	public void setWhatIhave(int whatIhave) {
		this.whatIhave = whatIhave;
	}

	public int getWhatIhave() {
		return whatIhave;
	}

	public String toString() {
		return "UserMaker [id=" + id + ", name=" + name + ", surname=" + surname + ", NIN=" + NIN + ", whatIhave="
				+ whatIhave + "]";
	}

}

 

Czy taki zabieg jest ogólnie możliwy? :)

1 odpowiedź

+1 głos
odpowiedź 8 listopada 2017 przez mbabane Szeryf (79,280 p.)
wybrane 8 listopada 2017 przez heartagram
 
Najlepsza

Zdaje się ze problem polegał na tym, że do get'a dajesz zly typ:

System.out.println(userMakerTest.get(1));

Trzeba podać longa/Longa tak jak zadeklarowałeś i tak jak używasz przy dodawaniu:

System.out.println(userMakerTest.get((long)1));
System.out.println(userMakerTest.get(2L));

 

komentarz 8 listopada 2017 przez heartagram Obywatel (1,770 p.)
Faktycznie, błąd taktyczny - dzięki :)

Ale mam pytanie mocniejsze: jak manipulować tym obiektem w kolekcji tzn. np. chciałbym wyciągnąć z obiektu o id: 1 czyli Jan Nowak jego nazwisko czyli zmienną surname i ją zmienić np. na Nowakowski i wrzucić z powrotem kolekcji aby ją w przyszłości już zwracać zmienioną?
1
komentarz 8 listopada 2017 przez mbabane Szeryf (79,280 p.)

Nie trzeba robić nic nadzwyczajnego, ponieważ w kolekcji przechowywane są referencje do obiektu, czyli takie odwołania do obiektu w pamięci (do konkretnej komórki pamięci). Przeanalizuj poniższy przykład:

Klasa obiekt = new Klasa();
 obiekt.pole = "wartosc";
System.out.println("Pole w obiekt: " + obiekt.pole);


 Klasa obiekt2 = obiekt;
System.out.println("Pole w obiekt2: " + obiekt2.pole);

obiekt2.pole = "zmieniam";
System.out.println("pole po zmianie w obiekt2: " + obiekt2.pole);
System.out.println("pole w obiekt: " + obiekt.pole);


//output
Pole w obiekt: wartosc
Pole w obiekt2: wartosc
pole po zmianie w obiekt2: zmieniam
pole w obiekt: zmieniam

A z mapa mozna zrobić np tak:

Map<Long, UserMaker> userMakerTest = new HashMap<>();
userMakerTest.put((long)1, new UserMaker(1,"Jan", "Nowak", 12345,0));
userMakerTest.put((long)2, new UserMaker(2,"Janusz", "Kowal", 543321, 0));
        
System.out.println("Stare name:" + userMakerTest.get(2L).getName());
userMakerTest.get(2L).setName("NoweName");
System.out.println("Po edycji:" + userMakerTest.get(2L).getName());

UserMaker userMaker = userMakerTest.get(2L);
userMaker.setName("Kolejny raz zmienione");
System.out.println("Kolejna edycja:" + userMakerTest.get(2L).getName());

 

komentarz 10 listopada 2017 przez heartagram Obywatel (1,770 p.)
Dokładnie to czego potrzebowałem, dzięki wielkie! :D

Podobne pytania

0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 26 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
0 głosów
1 odpowiedź 174 wizyt
pytanie zadane 25 lutego 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
2 odpowiedzi 396 wizyt
pytanie zadane 16 czerwca 2017 w Java przez agigi1988 Nowicjusz (190 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...