WebProg-2014/Gyakorlat5

A MathWikiből
(Változatok közti eltérés)
(További feladatok)
(További feladatok)
60. sor: 60. sor:
  
 
== További feladatok ==
 
== További feladatok ==
 +
 +
=== ArrayList különbség ===
 +
 +
Írjatok egy osztályt (nevet ti találjátok ki), ami egy ArrayList-ben tárolja az elemeket és két ilyen objektumot ki lehet vonni egymásból. Azaz legyen egy metódusa, ami egy ugyanilyen objektumot kap és visszaadja a különbséget. A különbség mûködjön a következõképpen:
 +
 +
* Ha egy elem többször szerepel a '''kisebbítendő'''ben, de a '''kivonandó'''ban csak egyszer, akkor csak egy elõfordulással legyen kevesebb a '''különbség'''ben. Azaz annyival legyen kevesebb a '''különbség'''ben amennyi a '''kivonandó'''ban van.
 +
* Ha a '''kivonandóban''' egy elem többször szerepel, mint a '''kisebbítendõben''', akkor töröljük az összes elõfordulását a '''különbség'''ben, de negatívba ne menjünk (mert nem tudunk).
 +
 +
Elõször talán jobb, ha úgy írjátok meg az osztályt, hogy konkrétan pl egy '''ArrayList<String>'''-et tárol, de utána próbáljátok megcsinálni általános '''ArrayList'''-re.
 +
 +
== Asteroids powerup ==
  
 
Elõször nézzétek át hogyan is használom az Asteroids-ban az ArrayList-eket az aszteroidák és a golyók tárolására.
 
Elõször nézzétek át hogyan is használom az Asteroids-ban az ArrayList-eket az aszteroidák és a golyók tárolására.

A lap 2015. március 18., 18:27-kori változata

Tartalomjegyzék

Bemelegítõ feladatok

Ezeket mind lehet csak egy mainbe írni, egy amúgy üres osztályba. Ha ezt minden file elejére írjátok, akkor nem lesz gond az osztályok importálgatásával:

import java.util.*;

FONTOS: ahol iterálgatásról meg iterátorról írok, ott megoldható az elõadáson látott while ciklusos hasNext metódussal és bejáró for ciklussal is.

ArrayList

  • Készítsetek egy Stringeket tároló ArrayListet. Adjátok hozzá a következõ Stringeket:
Java
Unix
Oracle
C++
Perl
  • Majd iterátorral járjátok be a listát és írjátok ki az elemeit külön sorokba (tehát a kimenet legyen az ami pont a fenti felsorolás).
  • Töröljétek a C++ és Oracle elemeket. Majd írjátok ki mégegyszer a maradék listát.
  • Kérdezzétek le, hogy hanyadik indexen található a Unix. Állítsátok ezt át Linuxra. Végül írjátok ki csak ezt a módosított elemet a get metódust használva.

HashSet

  • HashSet segítségével határozzatok meg prímeket.
  • Készítsetek egy inteket tároló HashSetet. Adjátok hozzá a számokat 2-tõl 100-ig. Valamint készítsetek mégegy HashSetet, amibe nem töltünk még elemeket.
  • Kérjetek el egy iterátort és iteráljatok végig az elemeken. A cikluson belül kérjetek el egy újabb iterátort. Majd az így megírt belsõ cikluson belül vizsgáljátok, hogy a külsõben figyelt elem osztható-e a belsõ elemmel, ha igen és nem egyezik meg ezzel az elemmel, akkor rakjátok a második HashSetbe.
  • Amikor lefutott ez az egymásba ágyazott két ciklus, akkor a második HashSetben megkaptuk az összetett számokat. Töröljétek ezeket az elsõ HashSetbõl. (Iteráljatok végig a 2.-on, és hívjátok meg a remove metódust az adott elemmel az elsõ HashSeten.)
  • Gondolkozzatok el rajta hogyan lehetett volna ezt optimálisan megoldani.

HashMap

  • Készítsetek egy HashMapet, ami Stringekhez számokat tud hozzárendelni. Töltsétek ezt fel a következõ kulcs-érték párokkal:
one: 1
two: 2
three: 3
four: 4
five: 5
  • Írjátok ki csak a kulcsokat, majd csak az értékeket. Végül a kulcs-érték párokat úgy ahogy fent is látszik. Ehhez segítség:
Set<String> keys = hm.keySet();
for(String key: keys){
    System.out.println("Value of "+key+" is: "+hm.get(key));
}
  • hm itt egy HashMap.
  • Az elsõ sorban lekérjük a kulcsait tartalmazó halmazt.
  • Majd egy ciklussal végigiterálunk a kulcsokon.
  • A cikluson belül megy a kiírás.


További feladatok

ArrayList különbség

Írjatok egy osztályt (nevet ti találjátok ki), ami egy ArrayList-ben tárolja az elemeket és két ilyen objektumot ki lehet vonni egymásból. Azaz legyen egy metódusa, ami egy ugyanilyen objektumot kap és visszaadja a különbséget. A különbség mûködjön a következõképpen:

  • Ha egy elem többször szerepel a kisebbítendőben, de a kivonandóban csak egyszer, akkor csak egy elõfordulással legyen kevesebb a különbségben. Azaz annyival legyen kevesebb a különbségben amennyi a kivonandóban van.
  • Ha a kivonandóban egy elem többször szerepel, mint a kisebbítendõben, akkor töröljük az összes elõfordulását a különbségben, de negatívba ne menjünk (mert nem tudunk).

Elõször talán jobb, ha úgy írjátok meg az osztályt, hogy konkrétan pl egy ArrayList<String>-et tárol, de utána próbáljátok megcsinálni általános ArrayList-re.

Asteroids powerup

Elõször nézzétek át hogyan is használom az Asteroids-ban az ArrayList-eket az aszteroidák és a golyók tárolására.

Személyes eszközök