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

Konkurs Mistrz Programowania
0 głosów
963 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,260 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,260 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ź 311 wizyt
pytanie zadane 26 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
0 głosów
1 odpowiedź 432 wizyt
pytanie zadane 25 lutego 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
2 odpowiedzi 669 wizyt
pytanie zadane 16 czerwca 2017 w Java przez agigi1988 Nowicjusz (190 p.)

93,653 zapytań

142,574 odpowiedzi

323,089 komentarzy

63,169 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

Kursy INF.02 i INF.03
...