Java Collections exemple
- Detalii
- Categorie: Programare Java
- Accesări: 5,318
Scrieti, compilati si rulati toate exemplele din acest tutorial:
1. Urmatorul exemplu foloseste diferite clase de colectii si adauga cate un element in aceste colectii
import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; public class Main { public static void main(String[] args) { List lnkLst = new LinkedList(); lnkLst.add("element1"); lnkLst.add("element2"); lnkLst.add("element3"); lnkLst.add("element4"); displayAll(lnkLst); List aryLst = new ArrayList(); aryLst.add("x"); aryLst.add("y"); aryLst.add("z"); aryLst.add("w"); displayAll(aryLst); Set hashSet = new HashSet(); hashSet.add("set1"); hashSet.add("set2"); hashSet.add("set3"); hashSet.add("set4"); displayAll(hashSet); SortedSet treeSet = new TreeSet(); treeSet.add("1"); treeSet.add("2"); treeSet.add("3"); treeSet.add("4"); displayAll(treeSet); LinkedHashSet lnkHashset = new LinkedHashSet(); lnkHashset.add("one"); lnkHashset.add("two"); lnkHashset.add("three"); lnkHashset.add("four"); displayAll(lnkHashset); Map map1 = new HashMap(); map1.put("key1", "J"); map1.put("key2", "K"); map1.put("key3", "L"); map1.put("key4", "M"); displayAll(map1.keySet()); displayAll(map1.values()); SortedMap map2 = new TreeMap(); map2.put("key1", "JJ"); map2.put("key2", "KK"); map2.put("key3", "LL"); map2.put("key4", "MM"); displayAll(map2.keySet()); displayAll(map2.values()); LinkedHashMap map3 = new LinkedHashMap(); map3.put("key1", "JJJ"); map3.put("key2", "KKK"); map3.put("key3", "LLL"); map3.put("key4", "MMM"); displayAll(map3.keySet()); displayAll(map3.values()); } static void displayAll(Collection col) { Iterator itr = col.iterator(); while (itr.hasNext()) { String str = (String) itr.next(); System.out.print(str + " "); } System.out.println(); } }
Rezultatul obtinut este: element1 element2 element3 element4 x y z w set1 set2 set3 set4 1 2 3 4 one two three four key4 key3 key2 key1 M L K J key1 key2 key3 key4 JJ KK LL MM key1 key2 key3 key4 JJJ KKK LLL MMM
2. Sa se determine dimensiunea(numarul de elemente) unei colectii? Se vor utiliza metodele: collection.add() – pentru adaugarea unui nou element intr-o colectie
collection.size() – pentru a afla dimensiunea colectiei din clasa Collection
import java.util.*; public class CollectionTest { public static void main(String [] args) { int size; HashSet collection = new HashSet (); String str1 = "Galben", str2 = "Alb", str3 = "Verde", str4 = "Albastru"; Iterator iterator; collection.add(str1); collection.add(str2); collection.add(str3); collection.add(str4); System.out.print("Informatiile colectiei: "); iterator = collection.iterator(); while (iterator.hasNext()){ System.out.print(iterator.next() + " "); } System.out.println(); size = collection.size(); if (collection.isEmpty()){ System.out.println("Collection este vida"); } else{ System.out.println( "Numarul de elemente din Collection: " + size); } System.out.println(); } }
Rezultatul obtinut este:
Informatiile colectiei: Albastru Alb Verde Galben
Numarul de elemente din Collection: 4
3. Sa se afle valoarea minima si maxima dintr-o colectie de tip List?
import java.util.*; public class Main { public static void main(String[] args) { List list = Arrays.asList("one Two three Four five six one three Four".split(" ")); System.out.println(list); System.out.println("max: " + Collections.max(list)); System.out.println("min: " + Collections.min(list)); } }
Rezultatul: [one, Two, three, Four, five, six, one, three, Four] max: three min: Four
4. Sa se implementeze o clasa Catalog care sa permita urmatoarele operatii:
-
1) Adaugarea unui student (nume, media)
-
2) Afisarea tuturor studentilor
-
3) Cautarea unui student dupa nume
-
4) Stergerea unui student dupa nume
-
5) Ordonarea studentilor alfabetic dupa nume 6) Ordonarea studentilor dupa medie
import java.util.*; class Student { public String nume; public int media; public Student (String nume, int media) { this.nume = nume; this.media = media; } public void afisare (){ System.out.println ("Nume: " + nume + " media: " + media); } } class ComparatorNume implements Comparator { public int compare (Object o1, Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; // String.compareTo este echivalenta cu functia strcmp return s1.nume.compareTo (s2.nume); } } class ComparatorMedie implements Comparator { public int compare (Object o1, Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; return s1.media - s2.media; } } class Catalog { // in acest exemplu, putea fi si private ArrayList lista private LinkedList lista; public Catalog () { // daca foloseam ArrayList, inlocuiam aceasta linie cu: // lista = new ArrayList () lista = new LinkedList (); } public void adaugare (Student s){ lista.add (s); } public void afisare (){ Iterator it = lista.iterator (); while (it.hasNext ()) { Student crt = (Student) it.next (); crt.afisare (); } } public Student cautare (String nume) { Iterator it = lista.iterator (); while (it.hasNext ()) { Student crt = (Student) it.next (); if (crt.nume.equals (nume)) return (crt); } return null; //daca nu s-a gasit } public void stergere (String nume) { Iterator it = lista.iterator (); while (it.hasNext ()) { Student crt = (Student) it.next (); if (crt.nume.equals (nume)) it.remove (); } } public void ordonare_medie () { Collections.sort (lista, new ComparatorMedie ()); } public void ordonare_alfabetic (){ Collections.sort (lista, new ComparatorNume ()); } } public class Problema_rezolvata { public static void main(String[] args) { Catalog c = new Catalog (); Student s1 = new Student ("Ionescu", 10); Student s2 = new Student ("Vasile", 5); Student s3 = new Student ("Popescu", 8); Student s4 = new Student ("Georgescu", 1); c.adaugare (s1); c.adaugare (s2); c.adaugare (s3); c.adaugare (s4); System.out.println ("Dupa adaugare:"); System.out.println("----------------------------"); c.afisare (); Student s = c.cautare ("Georgescu"); if (s != null){ System.out.println("----------------------------"); System.out.println ("Am gasit studentul:"); s.afisare (); System.out.println("----------------------------"); } else System.out.println ("Georgescu nu a fost gasit !"); c.stergere ("Georgescu"); System.out.println("----------------------------"); System.out.println ("Dupa stergere:"); System.out.println("----------------------------"); c.afisare (); c.ordonare_alfabetic (); System.out.println("----------------------------"); System.out.println ("Dupa ordonare alfabetic:"); System.out.println("----------------------------"); c.afisare (); c.ordonare_medie (); System.out.println("----------------------------"); System.out.println ("Dupa ordonare dupa medie:"); System.out.println("----------------------------"); c.afisare (); } }
Probleme Java Colection propuse spre rezolvare
1. Sa se creeze o clasa care sa contina ca data membra privata un vector (tablou unidimensional) de numere întregi de dimensiune variabila, care se stabileste pentru fiecare obiect la constructia acestuia. În aceasta clasa redefiniti functia toString(), care sa afiseze numerele continute. În functia main() a clasei principale construiti un obiect din clasa creata care sa contina numerele 2, 9, 4, 5, 7, 8 si afisati continutul acestuia folosind functia toString() a clasei respective.
2. Sa se creeze o clasa Complex, pentru definirea unui numar complex, cu partea reala si imaginara ca numere de tip double. Definiti constructorii, functia de afisare (toString()), functia de testare a egalitatii a doua obiecte (equals()) , o functie care realizeaza adunarea a doua numere complexe. În functia main() creati doua obiecte din clasa Complex, cu valorile 2, 4, respectiv 5, 6 a partilor reale si imaginare. Verificati daca cele doua obiecte sunt egale si afisati rezultatul la consola. Calculati si afisati suma celor doua numere complexe.
3. Sa se creeze un program care sa contina urmatoarele clase si interfete: Clasa Persoana care contine variabila membra private String nume, functiile necesare pentru citirea si scrierea acestei variabile, constructori, etc. Interfata Adresa care declara functiile abstracte String getAdresa() si void setAdresa(String s); Clasa Student care extinde clasa Persoana si implementeaza interfata Adresa. Clasa Profesor care extinde clasa Persoana si implementeaza interfata Adresa. În functia main() a programului sa se creeze un obiect Student, cu numele Ionescu si adresa Targu-Jiu si un obiect Profesor cu numele Popescu si adresa Craiova. Afisati la consola datele celor doua obiecte (numele si adresa).