Laborator 7

Colectii de obiecte

Obiective

Intelegerea claselor din pachetul java.util utilizate pentru lucrul cu colectii de obiecte.

Aspecte teoretice

Exercitii

1. Modificati aplicatia BirdControler din sectiunea polimorfism pentru a stoca obiectele de tip Bird intr-o colectie de tip ArrayList.

2. Stergeţi sau comentaţi metoda equals din cadrul clasei Persoana din aplicatia RemoveExample din sectiunea Colectii. Rulaţi aplicaţia şi observaţi difernţa in functionare.

3. Modificaţi aplicaţia LinkedExample din sectiunea Colectii pentru a implementa o regulă de tip Last In First Out.

4. Suprascrieti metoda equals din clasa Person din aplicatia TestSort din sectiunea Colectii

5. Implementaţi în cadrul aplicaţiei TestQueue din sectiunea Colectii un mecanism de generare automată de obiecte de tip Job cu priorităţi aleatoare în intervalul 1 – 10. Adăugaţi în cadrul cozii 20 astfel de job-uri. Executaţi job-urile introduse în coadă parcurgând coada cu o structură de tip while.

6. Adaugati in cadrul aplicatiei Dictionar din sectiunea Colectii posibilitatea de a sterge un cuvant din dictionar.

7. Verificati aplicatia Dictionar2 din sectiunea Colectii. Decomentati metodele hashMap() si equals() din clasa Cuvant si verificati din nou modul de functionare. Explicati diferenta in functionare.

Exercitii optionale suplimentare

S1.

public class CompareStrings {
	public static void main(String[] args) {
		String s1 = "program test";
		String s2 = "program test";
		String s3 = new String("program test");
		String s4 = new String("program test");
 
		//caz 1
		if(s1.equals(s2))
			System.out.println("1. Objects s1 and s2 are equals!");
		else
			System.out.println("2. Objects s1 and s2 are NOT equals!");
 
		//caz 2
		if(s1 == s2)
			System.out.println("3. Objects s1 and s2 are equals!");
		else
			System.out.println("4. Objects s1 and s2 are NOT equals!");
 
		//caz 3
		if(s1 == s3)
			System.out.println("5. Objects s1 and s2 are equals!");
		else
			System.out.println("6. Objects s1 and s2 are NOT equals!");
 
		//caz 4
		if(s3 == s4)
			System.out.println("7. Objects s1 and s2 are equals!");
		else
			System.out.println("8. Objects s1 and s2 are NOT equals!");
 
	}
}

Conform teoriei compararea a doua obiecte prin intermediul referintei si nu folosind metoda equals va genera un raspuns de tip false chiar daca cele doua obiecte au acelasi continut daca pointeaza catre obiecte diferite. Aparent, acest lucru totusi nu se aplica in cazul 2 de mai sus unde avem doua obiecte diferite s1 si s2. Folosind resurse din internet raspundeti la intrebarea: “De ce in cazul 2 comparatia va genera un raspuns true”.