Az Iterator interfész lehetőségeit
egész számok sorozatának kezelésén keresztül tekinthetjük meg.
import java.util.*; public class Iteracio { public static void main(String[] args) { Collection c = new ArrayList(); for(int i = 0; i<10; ++i) c.add(Integer.toString(i)); String s = null; Iterator it = c.iterator(); System.out.println("Minden szám:"); while(it.hasNext()) { s = (String) it.next(); System.out.println(s); if (Integer.valueOf(s).intValue() > 4) it.remove(); } Iterator it2 = c.iterator(); System.out.println("5-nél kisebb számok:"); while(it2.hasNext()) { s = (String) it2.next(); System.out.println(s); } } }A program forráskódja: Iteracio.java |
Program a parancs-sorban megadott paraméterek szétválogatására aszerint,
hogy egyszer vagy többször szerepelnek.
import java.util.*; public class Duplikacio { public static void main(String args[]) { Set egyedi = new HashSet(); Set duplikalt = new TreeSet(); for (int i=0; i < args.length; ++i) if (!egyedi.add(args[i])) duplikalt.add(args[i]); egyedi.removeAll(duplikalt); System.out.println("Egyedi szavak: " + egyedi); System.out.println("Duplikált szavak: " + duplikalt); } }A program forráskódja: Duplikacio.java |
Verem megvalósítása láncolt listával, valamint egy olyan példaprogram,
mely a verem segítségével lengyel formájú (postfix) aritmetikai
kifejezések kiértékelését végzi. Az argumentumokat a parancs-sorban
kell megadni (egész számok), a műveletek a következők lehetnek:
összeadás (+) és szorzás (.).
Példa a futtatásra:
Ez a 2*(3+5) kifejezés értékét számítja ki, az eredmény 16.
import java.util.*; public class Verem extends LinkedList { public Verem(Collection c) { super(c); } public void push(Object o) { addFirst(o); } public Object top() { return getFirst(); } public Object pop() { return removeFirst(); } } import java.util.*; public class VeremProba { public static void main(String[] args) { Collection c = Arrays.asList(args); Verem v = new Verem(c); String s1 = null, s2 = null, s3 = null; try { s1 = (String)(v.pop()); while(!v.isEmpty()) { s2 = (String)(v.pop()); s3 = (String)(v.pop()); if(s3.compareTo("+")==0) { s1 = new String(String.valueOf( Integer.valueOf(s1).intValue() + Integer.valueOf(s2).intValue())); } else if(s3.compareTo(".")==0) { s1 = new String(String.valueOf( Integer.valueOf(s1).intValue() * Integer.valueOf(s2).intValue())); } } System.out.println("Eredmény: " + s1); } catch(Exception e) { System.out.println("Hibás kifejezés!"); } } }A program forráskódja: Verem.java, VeremProba.java |
A program a parancs-sorban megadott szövegeket lexikografikusan
és hosszuk szerint rendezi, és növekvő sorrendben kiírja.
import java.util.*; class Hosszusag { static final Comparator hosszusagiSorrend = new Comparator() { public int compare(Object o1, Object o2) { String s1 = (String) o1; String s2 = (String) o2; return s1.length()-s2.length(); } }; public static void main(String args[]) { List parameterek = Arrays.asList(args); // Tömb->lista Collections.sort(parameterek); // Rendezés System.out.println("Lexikografikus sorrend:"); System.out.println(parameterek); Collections.sort(parameterek, hosszusagiSorrend); System.out.println("Hosszúsági sorrend:"); System.out.println(parameterek); } }A program forráskódja: Hosszusag.java |