• 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)

VPS Starter Arubacloud
0 głosów
666 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ź 201 wizyt
pytanie zadane 26 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 25 lutego 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
2 odpowiedzi 392 wizyt
pytanie zadane 16 czerwca 2017 w Java przez agigi1988 Nowicjusz (190 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...