Wie ist der Output des folgenden Codes?
ArrayList Mitarbeiter = new ArrayList();
Mitarbeiter.add(5);
Integer mitarbeiter= Mitarbeiter.get(0);
System.out.println(mitarbeiter);
Antwort/ answer | |
---|---|
Wie ist der Output des folgenden Codes?
ArrayList Mitarbeiter = new ArrayList();
Mitarbeiter.add(5);
Integer mitarbeiter= Mitarbeiter.get(0);
System.out.println(mitarbeiter);
Antwort/ answer | |
---|---|
ArrayIndexOutOfBoundsException tritt immer dann auf, wenn auf einen Index im Array zugegriffen werden soll, der nicht vorhanden ist:
int a [ ] = {10,20};
a[2]=30;
Dies wird nicht vom Compiler abgefangen, sondern es wird von der JVM zur Laufzeit eine Exception geworfen.
Wie ist der Output des folgenden Codes?
Number[]a = new Integer[3];
System.out.println(a[2]);
Antwort/ answer | |
---|---|
Für Arrays gibt es zusätzlich eine veränderte/ erweiterte Form der for-Schleife; statt
for (int b=0; b<a.length; b++)
System.out.println(a[b]);
hat
for (int b : a)
System.out.println(b);
den gleichen Effekt.
Was ist der Output des folgenden Codes:
String [] a = {“eins”,”zwei”};
System.out.print(a.length);
System.out.print(a[0].length());
Antwort/ answer | |
---|---|
collections und Arrays lassen sich auf die gleiche Art und Weise serialisieren wie Objekte;
Definitionen:
ArrayList <String> a= new ArrayList <String>();
a.add(“Hello “);
a.add(“World “);
a.add(“serialized “);
int [] b = {1,2,3};
Wegschreiben mit ObjectOutputStream:
os.writeObject(a);
os.writeObject(b);
De-Serialisierung mit ObjectInputStream:
a=(ArrayList) ois.readObject();
b=(int[]) ois.readObject();
Auch hier ist zu beachten,dass jedes einzelne Element serialisiert werden muss. Ausnahmen führen zu einem Laufzeitfehler (NotSerializableException). Zu beachten ist auch, das das Collection-Interface selbst nicht serialisierbar ist, die konkrete Klasse aber schon.
Wir steigern den Schwierigkeitsgrad und nehmen zusätlich noch Comparator mit in unser Beispiel:
class Angestellter{
public static void main(String[] args) {
String a [] = {“Mailand”, “Berlin”, “Rom”};
NameSort ns = new NameSort();
Arrays.sort(a,ns); // Sortierung mit Comparator
System.out.println(Arrays.binarySearch(a,”Paris”, ns)); // Suche analog Sortierung mit Comparator
}
}
class NameSort implements Comparator <String>{
public int compare(String a ,String b){
return (b.compareTo(a));
}
}
Wichtig ist, immer gleichbleibend zu handeln, also entweder bei Sortierung und Suche den Comparator mit einzubeziehen oder diesem komplett wegzulassen. Wie schon vor ein paar Tagen erwähnt funktioniert der Comparator bei primitiven Datentypen nicht.
Wir haben ja bereits Arrays.binarySearch(Obj,Suchstring) und das Ergebnis einer erfolgreichen Suche kennengelernt.
Was passiert aber, wenn die Suche nicht erfolgreich ist, wie in unserem nächsten Beispiel:
class Angestellter{
public static void main(String[] args) {
String a [] = {“Mailand”, “Berlin”, “Rom”};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,”Paris”));
}
}
Die Ausgabe hier wäre -3; ziemlich verwirrend, oder?
Das minus-Zeichen zeigt an, das das Element nicht gefunden wurde.
Da der Wert 0 schon bei einer erfolgreichen Suche zurückgegeben wird (falls das gesuchte Element an der ersten Stelle steht und somit den index 0 hat), wird von -1 a (für das mögliche Einfügen an erster Stelle) heruntergezählt.