Links und Funktionen
Sprachumschaltung

Navigationspfad


Inhaltsbereich

Loesung 14-1(Code)

Java source code icon 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


Funktionsleiste