Loesung 14-1(Code)
Loesung14_1.java
—
Java source code,
2 KB (2362 bytes)
Dateiinhalt
import java.util.ArrayList; import java.util.List; public class Loesung14_1 { /** * Lösung zu Aufgabe 14-1, 2011L Vergleich: Arrays vs. ArrayList * * Generisches einfügen eines Elementes in eine * bereits sortierte ArrayList. * * @author jost * @param args Parameter wird ignoriert. */ public static void main(String[] args) { // Generieren eines sortierten Arrays zu Demonstrationszwecken ArrayList<Integer> alist = new ArrayList<Integer>(); alist.add(11); alist.add(17); alist.add(27); alist.add(39); alist.add(75); alist.add(88); alist.add(96); // Einfügen einer neuen Zeil ArrayList<Integer> nlist = insert(42, alist); // Ausgabe zur Kontrolle. Das Orignale Array ist unverändert geblieben. System.out.print("Original: "); System.out.println(alist.toString()); System.out.print("Inserted: "); System.out.println(nlist.toString()); // Auch in ein leeres Array können wir einfügen ArrayList<Integer> blist = new ArrayList<Integer>(); ArrayList<Integer> mlist = insert(69, blist); System.out.print("Original: "); System.out.println(blist.toString()); System.out.print("Inserted: "); System.out.println(mlist.toString()); // Mit einem Null-Pointer bekommen wir aber eine Exception, da der // verwendete ArrayList Konstruktor nicht damit umgehen kann. /* * ArrayList<Integer> clist = null; ArrayList<Integer> olist = * insert(69, clist); System.out.print("Inserted: "); * System.out.println(olist.toString()); */ } // public static ArrayList<Integer> insert(Integer element, // ArrayList<Integer> list){ public static <A extends Comparable<A>> ArrayList<A> insert(A element, ArrayList<A> list) { boolean inserted = false; // ArrayList<Integer> result = new ArrayList<Integer>(1 + list.size()); // Eine Möglichkeit... ArrayList<A> result = new ArrayList<A>(list); // Einfach ist aber dieser Konstruktor. // Anmerkung: Jede ArrayList ist auch eine Collection. Die Ordnung wird beibehalten. // Richtige Stelle finden int i = 0; // while (result.get(i) < element & i < result.size()) { // Liefert Exception falls das Eingabe ArrayList leer wäre. while (i < result.size() && element.compareTo(result.get(i)) > 0) { // Besser: Keine Exception! i++; } // An der gefundenen Stelle einfügen result.add(i, element); return result; } }
Artikelaktionen