Integer aus einer LinkedList entfernen kann so kompliziert sein–in Java!

Freitag, 4. Mai 2012 13:48 | Autor:

Ein kleines Problem, das sich bei der Verwendung von Integer- LinkedLists, ArrayLists und HashSets einschleichen kann ist die Verwendung von remove. Remove wird verwendet, um ein Element der LinkedList, der ArrayList oder des HashSets zu entfernen. An einem Beispiel mit einer LinkedList lässt sich das Problem einfach veranschaulichen:

 java |  copy code |? 
01
import java.util.LinkedList;
02
 
03
public class LLTest {
04
    private static LinkedList<Integer> intList = new LinkedList<Integer>();
05
 
06
    public static void main(String[] args) {
07
        intList.add(1);
08
        intList.add(2);
09
        intList.add(3);
10
        intList.remove(1);
11
 
12
        for (int i = 0; i < intList.size(); i++) {
13
            System.out.println(intList.get(i));
14
        }
15
    }
16
}

Das Programm müsste beim ersten Blick der LinkedList intList die Werte 1, 2 und 3 zuweisen und im Anschluss die 1 wieder entfernen. Denkste! Entfernt wird die 2, da sie das Erste Element der Liste ist (zero-based: bei 0 angefangen zu zählen). intList.remove(i) entfernt somit das Datum an index i.

Aber wenn nun eine LinkedList mit Strings gefüllt wird, ist auch das Entfernen mit name.remove(“Hello”) möglich.

Woran aber liegt diese unterschiedliche Interpretation in Java?

Nun, laut API sind für remove() zwei Argumente definiert remove(int index) und remove(Object o). Das Problem: Hier entscheidet sich Java, den index zu benutzen, da dieser ja ebenfalls ein IntegerWert ist. Das ganze findet man im Netz und in Foren unter dem Stichwort Autoboxing zu Hauf behandelt.

Die Lösung/Umgehung des Problems ist denkbar einfach aber auch recht unschön und erscheint vielleicht überflüssig und überladen. Durch das vorherige Casten der Variablen wird abgesichert, dass der Compiler den Typ “sieht” den der Programmierer verlangt. So tut etwa der Aufruf

 java |  copy code |? 
10
intList.remove((Integer) 1);

das gewünschte; Der Eintrag mit dem Inhalt 1 wird entfernt.

Mehr zum Autoboxing und der Umwandlung von primitiven Datentypen in Wrapper und umgekehrt, gibts in dem OpenBook Java ist auch eine Insel.

 

Thema: Java | Kommentare (0)

Chrome überholt Firefox–Die gesamte Bewegung auf dem Browsermarkt

Freitag, 27. April 2012 14:27 | Autor:

Wer verwendet welchen Browser in welcher Häufigkeit? Diese und andere Fragen sind essentiell für die Arbeit von Webdesignern und Webentwicklern; Eine interessante tabellarische Übersicht über den Verlauf der Browsernutzung gibt es auf w3schools.com.
Visualisiert und aufgehübscht dargestellt finden sich diese Informationen auch auf floern.com.

Interessante Fakten:

  • Internet Explorer verliert seit 2006 kontinuierlich an Marktanteil.
  • Chrome legte seit der Veröffentlichung 2008 einen starken Start hin und schaffte es, im März 2012 mit Firefox gleichzuziehen.
  • Firefox hat seit 2011 diverse Versionsupgrades von 3.5 bis 12.0 (Stand 27.04.2012, Update-Kanal: release) veröffentlicht.
  • Der AOL-Browser hat es 2002 auf einen Marktanteil von fast 5% geschafft und das Jahr 2003 nicht überlebt.
  • Durch die Auslieferung des InternetExplorers mit dem Betriebssystem Windows, wurde Netscape immer weiter zurückgetrieben (maximaler Marktanteil > 80% 1996).

 

image

In dieser netten interaktiven Grafik zeigt floern.com die Entwicklung der Browser-Anteile. Sehr schöne Visualisierung! (Screenshot von http://floern.com/blogData/files/browserstats.php)

Thema: kurz notiert, webdingens | Kommentare (0)

CSS-Trick–Zeilenumbruch und Absatz verhindern

Donnerstag, 8. März 2012 9:56 | Autor:

Es kann vorkommen, dass beim Gestalten einer Webseite der standardmäßige Zeilenumbruch des p-Tags für den Absatz und des hx-Tags für Überschriften nicht benötigt oder gar nicht gewünscht ist.

Verhindern lässt sich dies schnell durch das Hinzufügen einer CSS-Eigenschaft:

4fb80af966d3e1_

Natürlich lassen sich diese beiden Eigenschaften auch kombinieren, um keinen Absatz und keinen Umbruch bei einem p-Tag zu haben.

Thema: webdingens | Kommentare (0)

STRATO HiDrive - die sichere Onlinespeicher!