Problema 20

Iteratorii ne ajuta sa iteram peste o colectie fara a avea nevoie de alte variabile ajutatoare. Nu avem nevoie de variabile care sa tina minte numarul de elemente ale colectiei si nici nu trebuie sa calculam dimensiunea colectiei cu "size". Practic, dimensiunea unei colectii se stabileste astfel: cat timp mai exista un element urmator, se incrementeaza dimensiunea. Acest lucru il face "hasNext". Practic noi parcugem colectia cat timp mai exista elemente de parcurs. Un alt avantaj pe care il aduc iteratorii reprezinta faptul ca putem adauga respectiv scoate elemente din colectie.

import java.util.Collection;

import java.util.Iterator;

import java.util.LinkedList;

class Persoana{

private String nume,functie;

private int varsta;

private float venit;

public Persoana(String nume, String functie, int varsta, float venit){

this.nume=nume;

this.functie=functie;

this.varsta=varsta;

this.venit=venit;

}

public String getFunctie() {

return functie;

}

public float getVenit() {

return venit;

}

public void setVenit(float venit){

this.venit=venit;

}

}

class GrupPersoane{

private Collection<Persoana>grup=new LinkedList<>();

public void add(Persoana p){

grup.add(p);

}

public void marireVenit(String functie){

Iterator<Persoana>it=grup.iterator();

while(it.hasNext()){

Persoana tmp=it.next();

if(tmp.getFunctie().equals(functie)){

tmp.setVenit(tmp.getVenit()+1000);

}

}

}

}

public class Main {

public static void main(String[] args) {

GrupPersoane grup=new GrupPersoane();

Persoana p1=new Persoana("A","Programator",20,2000);

Persoana p2=new Persoana("B","Programator",25,3500);

Persoana p3=new Persoana("C","Manager",30,5000);

grup.add(p1);

grup.add(p2);

grup.add(p3);

grup.marireVenit("Programator");

System.out.println(p1.getVenit()+" "+p2.getVenit()+" "+p3.getVenit());

}

}