Ulohy z 2. cvicenia JAVY pre pokrocilych

Created: 2009-12-12 - 21:39

=========================================
Jednoduché úlohy
=========================================

-----------------------------------------
Vytvorte List z poľa String[] a do tohoto Listu pridajte na koniec reťazec "end".
Obsah Listu vypíšte.
//trivialne

-----------------------------------------
Vytvorte List z poľa String[] a do tohoto Listu pridajte na začiatok reťazec "begin".
Obsah Listu vypíšte.
//trivialne

-----------------------------------------
Prienik dvoch Set-ov.

public static Set<Object> prienik(Set<Object> a1, Set<Object> a2){
    Set<Object> a3 = new HashSet<Object>();
    a3.addAll(a1);
    a1.removeAll(a2);
    a3.removeAll(a1);
    return a3;    
}

-----------------------------------------
Napíšte metódu ktorá dostane na vstupe usporiadané pole int[] a jeden int.
Metóda vráti true ak sa daný int nachádza v poli, inak vráti false.

//nemozno pouzit Arrays.asList(), lebo nevytvori list z pola primitivnych datovych typov
public static boolean jeVPoli(int[] pole,int i){
    for (int j = 0; j < pole.length; j++) {
        if(pole[j]==i)
        return true;
    }
    return false;
}
-----------------------------------------
Vypíšte z poľa String[] reťazce, tak že ak sa nejaký reťazec opakuje, tak ho vypíšete len raz.
public static void vypisString(String[] pole){
    System.out.println(new HashSet(Arrays.asList(pole)));
}

-----------------------------------------
Napíšte program ktorý výpíše obsah celej Mapy po riadkoch v tvare:
"Pod kľúčom $key je uchovaná hodnota $val."

public static void vypisMapu(Map<Object,Object> mapa){
    for(Entry<Object,Object> e : mapa.entrySet()){
        System.out.println("Pod kľúčom "+e.getKey()+" je uchovaná hodnota "+e.getValue());        
    }
}

-----------------------------------------
Napíšte metódu s parametrom List, ktorá vráti nový List obsahujúci prvky v rovnakom poradí, pričom prvky sa nebudú opakovať.
Napr. ak parametrom bude List obsahujúci "Mama", "Mama", "má", "Emu", "má", "Emu", tak metóda vráti List obsahujúci "Mama", "má", "Emu".

public static List removeDuplicates(List a){
    return new ArrayList(new LinkedHashSet(a));
}

-----------------------------------------
Napíšte Comparator pre triedu Osoba ktorý môžeme použiť pre usporiadanie osôb podľa veku.
V testovacom príklade použite Comparator na:
- nájdenie maximálneho veku
- nájdenie minimálneho veku
- usporiadanie osôb podľa veku.

class Osoba {

  private int vek;
  private String meno;

  public int getVek() {
    return vek;
  }

  public void setVek(int vek) {
    this.vek = vek;
  }

  public String getMeno() {
    return meno;
  }

  public void setMeno(String meno) {
    this.meno = meno;
  }
}




=========================================
Zložitejšie úlohy
=========================================

-----------------------------------------
Vypíšte z poľa String[] reťazce, ktoré sa v poli opakujú.
Nakoniec vypíšte ešte koľko rôznych reťazcov sa v poli nachádza.

public static void rozneRetazce(String[] pole) {
    Map<String, Integer> pocetVyskytov = new TreeMap<String, Integer>();
    for (int i = 0; i < pole.length; i++) {
        if (!pocetVyskytov.containsKey(pole[i])) {
        pocetVyskytov.put(pole[i], 1);
        } else {
        pocetVyskytov.put(pole[i], pocetVyskytov.get(pole[i]) + 1);
        }
    }
    for(Entry<String,Integer> e : pocetVyskytov.entrySet()){
        if(!e.getValue().equals(1)){
        System.out.println(e.getKey());
        }
    }
    System.out.println("Pocet roznych: "+pocetVyskytov.size());
    }


-----------------------------------------
Vypíšte z poľa String[] reťazce, ktoré sa v poli opakujú a reťazce ktoré sa neopakujú.

public static void rozneRetazce(String[] pole) {
    List<String> vsetky = new ArrayList<String>(Arrays.asList(pole));
    List<String> neopakuju = new ArrayList<String>();
    List<String> opakuju = new ArrayList<String>();
    for (String s : vsetky) {
        if (neopakuju.contains(s)) {
        neopakuju.remove(s);
        opakuju.add(s);
        } else {
        if (!opakuju.contains(s))
            neopakuju.add(s);
        }
    }
    System.out.println("Neopakuju: " + neopakuju);
    System.out.println("Opakuju: " + opakuju);
    }