Discussion:
[Newbie] Fragen zu Listen und zu Java allgemein
(zu alt für eine Antwort)
Andreas Hartmann
2006-01-06 09:50:21 UTC
Permalink
Hallo allerseits,

ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.

Das Listenhandling in Java macht mir noch Kopfzerbrechen. Daher einige Fragen:

- Wie kann ich eine Liste (ArrayList,HashSet,HashTable) sortiert ausgeben?
Ich suche z.B. Methoden für die Perlkonstrukte:

# sort lexically
@articles = sort @files;

# sort numerically ascending
@articles = sort {$a <=> $b} @files;

# sort numerically descending
@articles = sort {$b <=> $a} @files;

- Wo ist der Unterschied zwischen einer
new ArrayList<String>() und
new ArrayList<Object>() wenn am Ende doch die gleichen Werte darin
gespeichert werden können?

- Gibt es Klassen in Java, die Perlhashes implementieren?

- Vielleicht gibt es ja irgendwo eine Doku für Perlprogrammierer, die Java
lernen wollen (From Perl to Java)?

- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?


Allgemein fällt mir auf, daß die Doku eher mau zu sein scheint. Außer der
API ist oft nicht viel vorhanden (ich vermisse die praktischen Beispiele
in der API, die oft viel mehr sagen, als die API selbst).


Falls ich bescheuerte Fragen gestellt haben sollte, würde ich mich freuen,
wenn mir jemand trotzdem bereit wäre, die Augen durch entsprechende
Hinweise zu öffnen.




Herzlichen Dank,
Andreas Hartmann
Achim Peters
2006-01-06 11:38:32 UTC
Permalink
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden.
Ob das der richtige Einstieg ist?
Post by Andreas Hartmann
Bei
Regexen bin ich bei apache.org fündig geworden.
Schon flachs. Seit Java 1.4 gibt es java.util.regex
Post by Andreas Hartmann
- Wie kann ich eine Liste (ArrayList,HashSet,HashTable) sortiert ausgeben?
Auch da ist je nach Aufgabenstellung vielleicht schon die Frage falsch
gestellt, und in Wirklichkeit suchst Du z. B. ein java.util.TreeSet. Das
ist nämlich per se sortiert.

Im übrigen ist weder ein HashSet noch eine Hashtable im Java-Sinne eine
Liste, da beide nicht das List-Interface implementieren.

Ansonsten gibt es java.util.Collections.sort(List, Comparator).
Post by Andreas Hartmann
# sort lexically
# sort numerically ascending
# sort numerically descending
Du brauchst entsprechende Comparator-Klassen (je Sortierverfahren ca.
ein 5-Zeiler (na gut. S. R. kriegt's auch in zweien hin).
Post by Andreas Hartmann
- Wo ist der Unterschied zwischen einer
new ArrayList<String>() und
new ArrayList<Object>() wenn am Ende doch die gleichen Werte darin
gespeichert werden können?
Können sie? In eine ArrayList<String> wirst Du kein Integer
reinbekommen, in die ArrayList<Object> schon.
Post by Andreas Hartmann
- Gibt es Klassen in Java, die Perlhashes implementieren?
Keine Ahnung, was Perlhashes sind.
Post by Andreas Hartmann
- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
Was ist das für eine Seite?
Post by Andreas Hartmann
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?
Man findet sie zunächst mal bei Sun in der Runtime-Umgebung von Java.
Was da an Utilities schon seit 1.1 dabei ist, ist irre. Ich kam von C
und fand es genial, dass der ganze Collections-Mist, den man fast in
jedem Programm braucht, schon mit dabei war, und man ihn sich nicht
"irgendwo im Internet" suchen musste. Am besten liest man sich die
ganzen java.* APIs mal quer durch, um ungefähr zu wissen, was es schon
alles gibt.
Post by Andreas Hartmann
Allgemein fällt mir auf, daß die Doku eher mau zu sein scheint. Außer der
API ist oft nicht viel vorhanden (ich vermisse die praktischen Beispiele
in der API, die oft viel mehr sagen, als die API selbst).
Geschmackssache. Als Einsteiger sollte man sich aber vielleicht doch ein
Einsteiger-Buch holen. Ich fand "Java in a Nutshell" optimal, wenn man
schon entwickeln kann.

Bye
Achim
Andreas Hartmann
2006-01-06 11:40:13 UTC
Permalink
Ich habe mitterweile eine 3. Doku gefunden, die wohl etwas besser zu sein
scheint, als die bisher von mir verwendete Doku. Daher reduziert sich mein
Fragenkatalog von unten etwas :-):


Gruß,
Andreas
Post by Andreas Hartmann
Hallo allerseits,
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
- Wo ist der Unterschied zwischen einer
new ArrayList<String>() und
new ArrayList<Object>() wenn am Ende doch die gleichen Werte darin
gespeichert werden können?
- Vielleicht gibt es ja irgendwo eine Doku für Perlprogrammierer, die Java
lernen wollen (From Perl to Java)?
- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?
Allgemein fällt mir auf, daß die Doku eher mau zu sein scheint. Außer der
API ist oft nicht viel vorhanden (ich vermisse die praktischen Beispiele
in der API, die oft viel mehr sagen, als die API selbst).
Timo Stamm
2006-01-06 12:04:44 UTC
Permalink
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
Gibt es auch in java.util.regexp. Am besten schaust du dir die API der
Standard Edition [1] mal an. Als Einsteiger neigt man dazu, alles neu zu
erfinden was es dort schon gibt.
Post by Andreas Hartmann
- Wo ist der Unterschied zwischen einer
new ArrayList<String>() und
new ArrayList<Object>() wenn am Ende doch die gleichen Werte darin
gespeichert werden können?
Der Compiler verhindert, dass du in eine ArrayList<String> etwas anderes
als Strings legst. Du kannst den Inhalt eines Containers mit Generics
auf verschiedene Typen festlegen ohne die Container-Klasse verändern zu
müssen.
Post by Andreas Hartmann
- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?
Einzelne Klassen wirst du eher nicht finden, sondern libraries mit
vielen Klassen, die in .jar Dateien gepackt sind.

Auf sourceforge.net, codehaus.org, javaforge.net findest du verschiedene
OS Projekte.

Der Grossteil aller Erweiterungen die du benötigst wirst du aber schon
in der API der Standard Edition (J2SE) oder der Enterprise Edition
(J2EE) finden.
Post by Andreas Hartmann
Allgemein fällt mir auf, daß die Doku eher mau zu sein scheint. Außer der
API ist oft nicht viel vorhanden (ich vermisse die praktischen Beispiele
in der API, die oft viel mehr sagen, als die API selbst).
Ich finde die API ist gut dokumentiert und in der Regel auch eindeutig.
Praktische Beispiel zur API findest du zum Beispiel hier [2], allerdings
gibt es keine Garantie dass die Kommentare sinnvoll sind.



Timo


[1] http://java.sun.com/j2se/1.5.0/docs/api/
[2] http://www.kickjava.com/
Michael Paap
2006-01-06 11:48:13 UTC
Permalink
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
Regexe sind aber auch seit geraumer Zeit in die
Standard-Klassenbibliothek eingebaut, siehe
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Post by Andreas Hartmann
- Wie kann ich eine Liste (ArrayList,HashSet,HashTable) sortiert ausgeben?
# sort lexically
@articles = sort @files;
# sort numerically ascending
@articles = sort {$a <=> $b} @files;
# sort numerically descending
@articles = sort {$b <=> $a} @files;
Schau dir mal die Klassen Collections und ihre "sort"-Methode an,
außerdem das Interface Comparable. Und wirf einen Blick in
http://java.sun.com/j2se/1.5.0/docs/guide/collections/index.html
Post by Andreas Hartmann
- Wo ist der Unterschied zwischen einer
new ArrayList<String>() und
new ArrayList<Object>() wenn am Ende doch die gleichen Werte darin
gespeichert werden können?
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Post by Andreas Hartmann
- Gibt es Klassen in Java, die Perlhashes implementieren?
Nicht eins zu eins. Aber wahrscheinlich hilft dir ein Blick auf das
Interface Map und seine Subtypen, insbesondere HashMap:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/HashMap.html
Post by Andreas Hartmann
- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?
Zu Java gehört eine umfangreiche Standard-Klassenbibliothek, die für
sehr viele Zwecke schon völlig ausreicht.
Post by Andreas Hartmann
Allgemein fällt mir auf, daß die Doku eher mau zu sein scheint. Außer der
API ist oft nicht viel vorhanden (ich vermisse die praktischen Beispiele
in der API, die oft viel mehr sagen, als die API selbst).
Die sind oft von der API aus in Form von "How to use"-Artikeln verlinkt.
Ansonsten würde ich Dir das Sun-Tutorial
http://java.sun.com/docs/books/tutorial/ empfehlen.
Außerdem http://javabuch.de (kostenloser Download).

Gruß,
Michael
--
Die Adresse im From existiert, wird aber nicht gelesen. Sollte
eine Mail-Antwort auf ein Posting vonnöten sein, bitte folgende
Adresse verwenden: newsreply@<DOMAIN_AUS_DEM_FROM_DIESES_POSTINGS>.
Andreas Hartmann
2006-01-07 09:20:15 UTC
Permalink
Post by Michael Paap
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
Regexe sind aber auch seit geraumer Zeit in die
Standard-Klassenbibliothek eingebaut, siehe
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Habe ich auch schon gefunden - allerdings sind die nicht so mächtig wie
die bei apache.org und das Verhalten ist auf jeden Fall anders:

/test/ matcht alles, was in einer Zeile ein test enthält, während die
SUN-Implementation aus Perlsicht /^test$/ meint, wenn man als Regex test
angibt. Die Perlimplementierung, wie sie auch apache.org umgesetzt hat,
ist mir als Unix-Mann einfach lieber, weil sie auch auf die GNU-Regexe
paßt, wie man sie auf jedem Unix-System findet (grep, sed z.B.).
Post by Michael Paap
Post by Andreas Hartmann
- Wie kann ich eine Liste (ArrayList,HashSet,HashTable) sortiert ausgeben?
# sort lexically
@articles = sort @files;
# sort numerically ascending
@articles = sort {$a <=> $b} @files;
# sort numerically descending
@articles = sort {$b <=> $a} @files;
Schau dir mal die Klassen Collections und ihre "sort"-Methode an,
außerdem das Interface Comparable. Und wirf einen Blick in
http://java.sun.com/j2se/1.5.0/docs/guide/collections/index.html
Habe ich mittlerweile erkannt. Für einen Neueinsteiger ist das historisch
gewachsene Chaos mit den vielen Listen-Klassen, Interfaces einfach
unübersichtlich. Das "Handbuch der Java-Programmierung" hat mir Dank sehr
strukturierter Darstellung die Augen geöffnet.

Mal ein konkretes Beispiel (einen Hash sortieren):


import java.util.*;

public class hmap
{ public static void main (String Args[])
{
TreeMap<String,String> M = new TreeMap<String,String>(new
ReverseStringComparator());
M.put("Key","Hugo");
M.put("anderer Schluessel","anderer Value");
M.put("Beispielschluessel","Beispielwer");
M.put("example key","examplevalue");
M.put("5. Key","5. Value");
Set<String>S=M.keySet();
System.out.println(S);
}
}

class ReverseStringComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
return ((String)o2).compareTo((String)o1);
}
}
Post by Michael Paap
javac hmap.java -Xlint:unchecked
hmap.java:9: warning: [unchecked] unchecked conversion
found : ReverseStringComparator<java.lang.Object,java.lang.Object>
required: java.util.Comparator<? super java.lang.String>
TreeMap<String,String> M = new TreeMap<String,String>(new
ReverseStringComparator<Object,Object>());
^
1 warning
Wie bekomme ich die Warnung weg?


Warum muß ich Vorfeld festlegen, welche Sortierreihenfolge die Map haben
soll? Wenn ich keySet anwende, bekomme ich ein Set zurück, welches sich
nicht sortieren läßt. Naja, ich habe noch nichts gefunden :-).
Post by Michael Paap
Post by Andreas Hartmann
- Wo ist der Unterschied zwischen einer
new ArrayList<String>() und
new ArrayList<Object>() wenn am Ende doch die gleichen Werte darin
gespeichert werden können?
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Post by Andreas Hartmann
- Gibt es Klassen in Java, die Perlhashes implementieren?
Nicht eins zu eins. Aber wahrscheinlich hilft dir ein Blick auf das
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/HashMap.html
Habe ich mir schon öfter angeschaut, aber ich kam zum selben Schluß, wie
Du hier auch schreibst - nicht eins zu eins.
Post by Michael Paap
Post by Andreas Hartmann
- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?
Zu Java gehört eine umfangreiche Standard-Klassenbibliothek, die für
sehr viele Zwecke schon völlig ausreicht.
Ausreichend vielleicht schon - aber besser oder anders gehts eben oft doch
noch!



Vielen Dank für Deine und Eure Infos,
Andreas
Stefan Matthias Aust
2006-01-07 09:29:43 UTC
Permalink
Post by Andreas Hartmann
class ReverseStringComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
return ((String)o2).compareTo((String)o1);
}
}
Dies sollte deine Warnung verhindern:

class RSC implements Comparator<String> {
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
}

Wenn du generische Typen bei deinem TreeSet benutzt, dann auch bei dem
zugehörigen Comparator.
Post by Andreas Hartmann
Warum muß ich Vorfeld festlegen, welche Sortierreihenfolge die Map haben
soll?
Das liegt in der Natur des TreeSets. Das keySet würdest du
normalerweise derart sortieren, dass du daraus eine Liste machst und
dann die sortierst. In Java musst du explizit hinschreiben, was in Perl
hinter den Kulissen automatisch geschieht.
--
Stefan Matthias Aust
Andreas Hartmann
2006-01-08 12:45:00 UTC
Permalink
Post by Stefan Matthias Aust
Post by Andreas Hartmann
class ReverseStringComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
return ((String)o2).compareTo((String)o1);
}
}
class RSC implements Comparator<String> {
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
}
Paßt. Danke. Jetzt habe ich das generics.tutorial.pdf von sun endlich
runterbekommen (hat gestern nicht funktioniert).
Post by Stefan Matthias Aust
Wenn du generische Typen bei deinem TreeSet benutzt, dann auch bei dem
zugehörigen Comparator.
Post by Andreas Hartmann
Warum muß ich Vorfeld festlegen, welche Sortierreihenfolge die Map haben
soll?
Das liegt in der Natur des TreeSets. Das keySet würdest du
normalerweise derart sortieren, dass du daraus eine Liste machst und
dann die sortierst. In Java musst du explizit hinschreiben, was in Perl
hinter den Kulissen automatisch geschieht.
Wie soll ich aus einem keySet() eine Liste machen? Das folgende
funktioniert zwar, dürfte aber nicht elegant sein :-):

Set <String> S=M.keySet();

// Aus einer Set-Liste eine ArrayList machen ...
Iterator <String> it=S.iterator();
List<String> L=new ArrayList<String>();
while (it.hasNext())
{
L.add((String) it.next());
}

Collections.sort(L);
System.out.println(L);
Collections.reverse(L);
System.out.println(L);



Gruß,
Andreas
Timo Stamm
2006-01-08 13:05:45 UTC
Permalink
Post by Andreas Hartmann
Wie soll ich aus einem keySet() eine Liste machen? Das folgende
Set <String> S=M.keySet();
// Aus einer Set-Liste eine ArrayList machen ...
Iterator <String> it=S.iterator();
List<String> L=new ArrayList<String>();
while (it.hasNext())
{
L.add((String) it.next());
}
Das geht kürzer (Map<String, String> m vorrausgesetzt):

ArrayList<String> l = new ArrayList<String>(m.keySet());
Post by Andreas Hartmann
Collections.sort(L);
System.out.println(L);
Collections.reverse(L);
System.out.println(L);
Aber warum jetzt sortieren? Wenn du eine TreeMap benutzt, wird bereits
beim Einfügen neuer Elemente sortiert.

Du solltest nach Möglichkeit darauf verzichten, deine Datenstrukturen zu
konvertieren. Beschränke dich auf das grundlegendste Interface, dass
benötigt wird. Iterable bietet sich an, das implementieren alle
Collections. (Warum eigentlich Maps nicht? *grummel*.)


BTW: Du kannst deine Variablen auch nach den Coding Conventions
benennen, das vermeidet Missverständnisse.
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html


Timo
Andreas Hartmann
2006-01-08 17:17:32 UTC
Permalink
[Danke für die Kurzform]
Post by Timo Stamm
Aber warum jetzt sortieren? Wenn du eine TreeMap benutzt, wird bereits
beim Einfügen neuer Elemente sortiert.
Klar, aber nur in einer Reihenfolge. Wenn ich es in der anderen benötige,
muß ich eben anders sortieren.
Wie das kurz und bündig geht, hast Du mir ja gezeigt. Ich hatte noch nicht
wirklich realisiert, daß ich eine ArrayList mit einem Set-Objekt
instanziieren kann, da ja das set ein Subinterface von Collection ist,
welche auch von ArrayList implementiert wird.
Post by Timo Stamm
Du solltest nach Möglichkeit darauf verzichten, deine Datenstrukturen zu
konvertieren.
Ich bin gerade dabei, grundlegende Elemente, Denkweisen und Vorgehen einer
OO-Sprache zu lernen und mache dies eben am Beispiel von Listen, weil ich
die hinterher garantiert brauchen werde.
Dabei lerne ich sicher auch, was man besser nicht tun sollte, dank Deinem
hilfreichen Kommentar z.B.
Post by Timo Stamm
Beschränke dich auf das grundlegendste Interface, dass
benötigt wird. Iterable bietet sich an, das implementieren alle
Collections. (Warum eigentlich Maps nicht? *grummel*.)
Was meinst Du mit "Maps"? Ich kenne bisher (Linked-)HashMap,
(Linked-)TreeMap, Properties und Hashtable. Das Beispiel hier basierte
ursprünglich auf einem TreeMap. Den habe ich genommen, weil das die
einzige Map ist, die sortiert angelegt wird - aber eben nur in einer
Sortierreihenfolge.
Da ich aber sämtliche Maps in ein ArrayList bekomme, welches sich über die
Collections-Klasse sortieren lassen, falls ich eine x-beliebige Sortierung
benötige, brauche ich den TreeMap eigentlich nicht mehr wirklich.
Post by Timo Stamm
BTW: Du kannst deine Variablen auch nach den Coding Conventions
benennen, das vermeidet Missverständnisse.
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
Werde ich mir ansehen!


Danke,
Andreas
Michael Paap
2006-01-08 18:10:05 UTC
Permalink
Post by Andreas Hartmann
Was meinst Du mit "Maps"?
Schätze, Timo würde gerne das Interface Map als Subinterface von
Iterable haben, was nicht der Fall ist.

Gruß,
Michael
--
Die Adresse im From existiert, wird aber nicht gelesen. Sollte
eine Mail-Antwort auf ein Posting vonnöten sein, bitte folgende
Adresse verwenden: newsreply@<DOMAIN_AUS_DEM_FROM_DIESES_POSTINGS>.
Andreas Hartmann
2006-01-08 20:46:05 UTC
Permalink
Post by Michael Paap
Post by Andreas Hartmann
Was meinst Du mit "Maps"?
Schätze, Timo würde gerne das Interface Map als Subinterface von
Iterable haben, was nicht der Fall ist.
Ach so, ich dachte, ich hätte das anwenden sollen (hätte es aber übersehen).

Ich bin zwar ein Frischling, aber das ist ja gerade das Verwirrende an den
Java-Listen, daß es so viele verschiedene gibt, die z.T. völlig
unterschiedlich behandelt werden, obwohl sie sich formal kaum
unterscheiden. Im Prinzip lassen sich alle Listen auf Arrays bzw. Hashes
zurückführen. Warum ein keySet bei den Maps nich einfach ein Array
zurückgibt sondern ein set, ist mir schleierhaft.



Viele Grüße,
Andreas
Stefan Ram
2006-01-08 21:10:50 UTC
Permalink
Post by Andreas Hartmann
Ich bin zwar ein Frischling, aber das ist ja gerade das
Verwirrende an den Java-Listen, daß es so viele verschiedene
gibt, die z.T. völlig unterschiedlich behandelt werden, obwohl
sie sich formal kaum unterscheiden.
Das kommt darauf an, was Du mit "Java-Liste" meinst.

Für mich ist das ein Objekt das

http://download.java.net/jdk6/docs/api/java/util/List.html

implementiert. Und da gibt es im wesentlichen Objekte der
Standardklassen "ArrayList" und "Stack" - die anderen Klassen,
die dort noch stehen, werden viel seltener benutzt.

Also sagst Du für mich:

"Das ist so verwirrend, daß es neben 'ArrayList' auch
noch 'Stack' gibt und beide sich teilweise unterschiedlich
verhalten."
Post by Andreas Hartmann
Im Prinzip lassen sich alle Listen auf Arrays bzw. Hashes
zurückführen.
Was heißt "zurückführen"?

ArrayLists werden wohl mit Arrays implementiert,
LinkedLists wohl nicht.
Post by Andreas Hartmann
Warum ein keySet bei den Maps nich einfach ein Array
zurückgibt sondern ein set, ist mir schleierhaft.
"nich einfach ... sondern ...".

Das klingt für mich wie: "Warum sie Kaffee trinken und
nicht einfach Tee, ist mir schleierhaft."

Bei einer Abbildung (engl. "map"!) ist die Definitionsmenge
(engl. "dom^H^H^Hkeys") eben eine Menge.
Andreas Hartmann
2006-01-09 09:45:33 UTC
Permalink
Post by Stefan Ram
Post by Andreas Hartmann
Ich bin zwar ein Frischling, aber das ist ja gerade das
Verwirrende an den Java-Listen, daß es so viele verschiedene
gibt, die z.T. völlig unterschiedlich behandelt werden, obwohl
sie sich formal kaum unterscheiden.
Das kommt darauf an, was Du mit "Java-Liste" meinst.
Für mich ist das ein Objekt das
http://download.java.net/jdk6/docs/api/java/util/List.html
implementiert. Und da gibt es im wesentlichen Objekte der
Standardklassen "ArrayList" und "Stack" - die anderen Klassen,
die dort noch stehen, werden viel seltener benutzt.
Als Einsteiger weiß man das natürlich nicht. Da steht man erstmal im Wald
und überlegt sich, was eigentlich sinnvoll ist und testet alles einmal.
V.a. ist ja entscheidend, was man mit ihnen anstellen kann. Wenn ich einen
Listentyp verwende, mit dem ich später in der Sackgasse lande, hat das ja
auch keinen Wert.

[...]
Post by Stefan Ram
Post by Andreas Hartmann
Warum ein keySet bei den Maps nich einfach ein Array
zurückgibt sondern ein set, ist mir schleierhaft.
"nich einfach ... sondern ...".
Das klingt für mich wie: "Warum sie Kaffee trinken und
nicht einfach Tee, ist mir schleierhaft."
Bei einer Abbildung (engl. "map"!) ist die Definitionsmenge
(engl. "dom^H^H^Hkeys") eben eine Menge.
Wenn auf die Menge wiederum alle anderen Listenaktionen durchführbar
wären, wäre es ja auch ok. Der Unterschied zwischen einer Menge und einer
Liste ist ja eher irrelevant, wenn die Liste das Ergebnis des Auslesens
der Key's einer Map ist (die ja in diesem Fall zwangsweise eindeutig sind).


Gruß,
Andreas
Achim Peters
2006-01-08 22:59:53 UTC
Permalink
Post by Andreas Hartmann
Ich bin zwar ein Frischling, aber das ist ja gerade das Verwirrende an den
Java-Listen, daß es so viele verschiedene gibt, die z.T. völlig
unterschiedlich behandelt werden, obwohl sie sich formal kaum
unterscheiden. Im Prinzip lassen sich alle Listen auf Arrays bzw. Hashes
zurückführen.
Im Prinzip sind alle Listen Listen, stimmt. Denke Dir einfach, dass die
verschiedenen Ausprägungen spezifische Eigenschaften haben, die manche
Entwickler gerne ausnutzen. Z. B. ist das Einfügen eines Elementes in
eine LinkedList im allgemeinen billiger als in eine ArrayList.
Post by Andreas Hartmann
Warum ein keySet bei den Maps nich einfach ein Array
zurückgibt sondern ein set, ist mir schleierhaft.
Weil die Elemente eines KeySets einer Menge ähnlicher sind als einer Liste.

Bye
Achim
Andreas Hartmann
2006-01-09 05:01:19 UTC
Permalink
Post by Achim Peters
Post by Andreas Hartmann
Ich bin zwar ein Frischling, aber das ist ja gerade das Verwirrende an den
Java-Listen, daß es so viele verschiedene gibt, die z.T. völlig
unterschiedlich behandelt werden, obwohl sie sich formal kaum
unterscheiden. Im Prinzip lassen sich alle Listen auf Arrays bzw. Hashes
zurückführen.
Im Prinzip sind alle Listen Listen, stimmt. Denke Dir einfach, dass die
verschiedenen Ausprägungen spezifische Eigenschaften haben, die manche
Entwickler gerne ausnutzen. Z. B. ist das Einfügen eines Elementes in
eine LinkedList im allgemeinen billiger als in eine ArrayList.
Das kann ich ja nachvollziehen und ist soweit auch ok. Daß es dabei aber
bei den Interfaces Unterschiede über die spezielle Ausprägung der Liste
hinuas gibt, ist für mich nicht nachvollziehbar, konkret, warum kann ein
Set nicht direkt sortiert werden, sondern muß erst in eine Liste (Array)
umgewandelt werden?
Post by Achim Peters
Post by Andreas Hartmann
Warum ein keySet bei den Maps nich einfach ein Array
zurückgibt sondern ein set, ist mir schleierhaft.
Weil die Elemente eines KeySets einer Menge ähnlicher sind als einer Liste.
Eine Menge ist eine spezielle Liste (Array), nämlich von der Art, daß es
keinen Wert mehrfach gibt. Ansonsten sind sie in soweit gleich, als daß
ich nicht nachvollziehen kann, warum ein set nicht sortierbar sein sollte.

Wahrscheinlich stört mich das deshalb, weil ich mir in Perl nie Gedanken
darüber mache, ob die Daten innerhalb eines Arrays oder Hashes
strukturiert sind, da sie immer erst bei der Verarbeitung bei Bedarf so
sortiert werden, wie es eben gerade sinnvoll ist.
In Perl bekommt man die Values aus einem Hash in ein Array, das dann
problemlos nach Gusto sortiert werden kann:

foreach (sort keys %hash) {...}



Viele Grüße,
Andreas
Achim Peters
2006-01-09 10:12:33 UTC
Permalink
Post by Andreas Hartmann
Post by Achim Peters
Post by Andreas Hartmann
Ich bin zwar ein Frischling, aber das ist ja gerade das Verwirrende an den
Java-Listen, daß es so viele verschiedene gibt, die z.T. völlig
unterschiedlich behandelt werden, obwohl sie sich formal kaum
unterscheiden. Im Prinzip lassen sich alle Listen auf Arrays bzw. Hashes
zurückführen.
Im Prinzip sind alle Listen Listen, stimmt. Denke Dir einfach, dass die
verschiedenen Ausprägungen spezifische Eigenschaften haben, die manche
Entwickler gerne ausnutzen. Z. B. ist das Einfügen eines Elementes in
eine LinkedList im allgemeinen billiger als in eine ArrayList.
Das kann ich ja nachvollziehen und ist soweit auch ok. Daß es dabei aber
bei den Interfaces Unterschiede über die spezielle Ausprägung der Liste
hinuas gibt, ist für mich nicht nachvollziehbar, konkret, warum kann ein
Set nicht direkt sortiert werden, sondern muß erst in eine Liste (Array)
umgewandelt werden?
Weil (zumindest von meinem mathematischen Gefühl her) Mengen eher etwas
Unsortiertes sind (meine Gefühle werden natürlich durch das Interface
SortedSet zu tiefst verletzt). Listen hingegen sind durch die
Reihenfolge ihrer Elemente immer sortiert.

Ansonsten kannst Du natürlich von Anfang an ein SortedSet statt eines
Sets nehmen.
Post by Andreas Hartmann
Post by Achim Peters
Post by Andreas Hartmann
Warum ein keySet bei den Maps nich einfach ein Array
zurückgibt sondern ein set, ist mir schleierhaft.
Weil die Elemente eines KeySets einer Menge ähnlicher sind als einer Liste.
Eine Menge ist eine spezielle Liste (Array),
Ein Array ist eine spezielle Liste.
Post by Andreas Hartmann
nämlich von der Art, daß es
keinen Wert mehrfach gibt.
Eben. Warum sollte man diese inhärente Eigenschaft eines Keysets
verloren gehen lassen?

Du musst Dich vielleicht geistig mal ein paar Tage oder Wochen mit
abstrakten Datentypen beschäftigen, und nicht immer alles aus der Sicht
des Assembler-Programmierers sehen.

Bye
Achim
Achim Peters
2006-01-07 09:33:57 UTC
Permalink
Post by Andreas Hartmann
Post by Michael Paap
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
Regexe sind aber auch seit geraumer Zeit in die
Standard-Klassenbibliothek eingebaut, siehe
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Habe ich auch schon gefunden - allerdings sind die nicht so mächtig wie
die bei apache.org
Z. B.?
Post by Andreas Hartmann
/test/ matcht alles, was in einer Zeile ein test enthält,
Nö. Du hast die API-Beschreibung nicht oder nicht hinreichend gelesen,
und es steht dort sogar schon ziemlich weit oben.

Hint: Es gibt mehr als eine Methode, die das Pattern im Input sucht.

Bye
Achim
Achim Peters
2006-01-07 10:16:05 UTC
Permalink
Post by Andreas Hartmann
Post by Michael Paap
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
Regexe sind aber auch seit geraumer Zeit in die
Standard-Klassenbibliothek eingebaut, siehe
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Habe ich auch schon gefunden - allerdings sind die nicht so mächtig wie
Z. B.?
Post by Andreas Hartmann
/test/ matcht alles, was in einer Zeile ein test enthält, während die
SUN-Implementation aus Perlsicht /^test$/ meint, wenn man als Regex test
angibt.
Nö. Du hast die API-Beschreibung nicht oder nicht hinreichend gelesen,
und es steht dort sogar schon ziemlich weit oben.

Hint: Es gibt mehr als eine Methode, die das Pattern im Input sucht.

Bye
Achim
Andreas Hartmann
2006-01-08 10:34:13 UTC
Permalink
Post by Achim Peters
Post by Andreas Hartmann
Post by Michael Paap
Post by Andreas Hartmann
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden. Bei
Regexen bin ich bei apache.org fündig geworden.
Regexe sind aber auch seit geraumer Zeit in die
Standard-Klassenbibliothek eingebaut, siehe
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Habe ich auch schon gefunden - allerdings sind die nicht so mächtig wie
Z. B.?
search and replace mit backreferences:

String regex="(.*)\\.ISO(\\d{4})-(\\d{2})";
Sting str="de_DE.ISO8859-15";
comp_re.subst(str,"$3.ISO$2$1",comp_re.REPLACE_BACKREFERENCES);

-> 15.ISO8859de_DE

Ist zwar wahrscheinlich auch irgendwie machbar, aber eben nicht so, wie
ich es gewohnt bin (oder ich habe es wieder übersehen).

Was aber bei den sun-Regexen eigentlich gut ist, daß es eine Methode gibt
(matches(regex,input)), mit der man einfach nur mal eben prüfen kann, ob
ein Regex matcht. Und der verhält sich wie matches() und eben nicht wie
find() (s.u.).
Post by Achim Peters
Post by Andreas Hartmann
/test/ matcht alles, was in einer Zeile ein test enthält, während die
SUN-Implementation aus Perlsicht /^test$/ meint, wenn man als Regex test
angibt.
Nö. Du hast die API-Beschreibung nicht oder nicht hinreichend gelesen,
und es steht dort sogar schon ziemlich weit oben.
Du hast Recht - das liegt daran, daß ich in einer der vielen Dokus den
expliziten Hinweis gelesen habe, daß bei der Methode matches() nach
^regex$ gesucht wird und dort dummerweise kein Hinweis auf die weiteren
Methoden gegeben wurde, die es sonst noch gibt. Ich hätte find() gebraucht
- das gibts aber nicht in der Form find(regex,input).

Ich verstehe aber, daß die Doku das automatische Setzen von ^ bzw. $
besonders hervorgehoben hat, da dies der Standard bei den Java-Regexen zu
sein scheint (verwendet von matches() und matches(regex,input)). find()
und lookingAt() gibt es zusätzlich. Was aus meiner Sicht keinen Sinn
macht, weil aus find sehr schnell ein matches() gemacht werden kann, durch
explizites Setzen von ^ und $, während matches eine sehr eingeschränkte
und intransparente Methode ist, dadurch daß sie den angegebenen Regex
selbständig manipuliert. Man hätte sich zwei Methoden sparen können und
hätte gleichzeitig mehr Transparenz gehabt.


Gruß,
Andreas
Christian Hauser
2006-01-08 03:09:34 UTC
Permalink
Falls du für gewisse Tasks kleine Beispiele suchst:
http://www.javaalmanac.com

Gruss,
Christian
Ralf Ullrich
2006-01-09 14:44:15 UTC
Permalink
Die letzten Tage habe ich diesen Thread mit wachsender Bestürzung verfolgt und wollte auch schon
mehrfach was posten, habe es dann aber gelassen, weil es ja eigentlich eh schon so viele Antworten
gibt. Aber jetzt muss ich ich doch nocht meinen Senf dazugeben, sonst kommt der OP ja nie auf einen
grünen Zweig.
Post by Andreas Hartmann
Hallo allerseits,
ich komme aus der Perl-Programmierung und möchte nun Java lernen. Klar,
daß ich daher versuche, liebgewonnene Features in Java wiederzufinden.
Vergiss das! Perl ist Perl und Java ist Java. Was in Perl guter Coding-Style ist ist Java schlechter
und umgekehrt. Sowieso halten sich die Gemeinsamkeiten so sehr in Grenzen, dass du außer der
Tatsache dass beide Sprachen if/then/else, do/while und for Statements haben, nicht viel übernehmen
kannst. Du findest keinen der Perl-Datentypen in Java und keinen der Java-Datentypen in Perl.
Post by Andreas Hartmann
BeiRegexen bin ich bei apache.org fündig geworden.
Schön. Kannst du machen, aber seit Java 1.4 solltest du in jedem Fall die java.util.regexp Klassen
verwenden. Sie sind schneller und arbeiten korrekt mit Unicode.
Dir macht eher das gesamte Konzept der Collections zu schaffen, weil du von Perl her gerade mal zwei
strukturierte Datentypen kennst (Arrays und Hashes) die mit etwas "Syntactic Sugar" auch als Listen
oder Mengen oder für Sortierungen benutzt werden können. Daher für dich mal eine Einführung in
Collections (in aller mir möglichen Kürze):

Collections sind Sammlungen von Elementen. - Mehr nicht, es gibt keine Aussagen darüber ob die
Elemente eine bestimmte dauerhafte Reihenfolge haben, oder ob es Duplikate geben darf.

Sets sind Collections, die garantiert keine Duplikate enthalten und deren Elemente keine bestimmte
Reihenfolge haben.

SortedSets sind Sets, deren Elemente eine bestimmte (Sortier-)Reihenfolge haben. - Diese Reihenfolge
wird zu jeder Zeit eingehalten und durch die "Werte" der Elemente (und ggf. einen Comparator) bestimmt.

Lists sind Collections, die Duplikate zulassen und deren Elemente eine Reihenfolge haben. - Die
Reihenfolge ist hier _nicht_ mit einer Sortierung zu verwechseln, sonern eher mit einem Array zu
vergleichen, d.h ein Element, das an Platz 5 gestellt wird, bleibt an Platz 5, solange _davor_ kein
Element gelöscht oder eingefügt wird.

Queues sind Collections, die auf das Ablegen und Herausholen von Elementen nach bestimmten Regeln
spezialisiert sind. - Daher die Methoden offer() fürs Ablegen und poll() fürs Herausholen. Die
Regeln nach denen die Queue das macht können sehr verschieden sein, siehe dazu die Javadoc der
Ausprägungen. Für den Moment kannst du Queues ganz ignorieren, da für ihre korrekte Auswahl und
ihren Einsatz fast immer bestimmte Performance-Aspekte bzw. algorithmische Betrachtungen nötig sind.
(Außerdem gibt es sie auch erst seit Java 5)


So, bis hierher sind die Collections nur durch Interfaces definiert, also letztlich über die
prinzipiellen Aussagen über ihre Eigenschaften. Wenn man diese Interfaces nun implementiert, stellt
man fest, dass man das oft auf mehrere Weisen machen kann, und dass dann Eigenschaften der
Implementierung hervortreten. Beispiele:

ArrayList ist eine Liste, die intern mit einem Array arbeitet. - Ihre Eigenschaften sind in der
Javadoc beschrieben: The size, isEmpty, get, set, iterator, and listIterator operations run in
constant time. The add operation runs in amortized constant time, that is, adding n elements
requires O(n) time. All of the other operations run in linear time (roughly speaking). The constant
factor is low compared to that for the LinkedList implementation.

LinkedList ist eine Liste, die intern mit Verkettungen arbeitet. - Auch ihre Eigenschaften stehen in
der Javadoc: All of the operations perform as could be expected for a doubly-linked list. Operations
that index into the list will traverse the list from the beginning or the end, whichever is closer
to the specified index. - D.h. es gehört wohl zum Grundlagen-Wissen eines Programmierers, dass eine
doubly-linked list z.b. bei get(int) vergleichsweise langsam ist, da es nicht näher ausgeführt wurde.

Ähnlich gilt das auch für die übrigen Ausprägungen der Collections.


Warum nun soviel Theater? In Perl reichen doch auch zwei strukturierte Datentypen?

Ganz einfach: eine Methode, die schlicht alle Elemente einer übergebenen Sammlung ausgeben soll,
braucht eigentlich nur Eigenschaften die bereits in Collection vorhanden sind: #iterator(). Wenn
man also schreibt

static void printAll(Collection c) {
Iterator iter = c.iterator();
while (iter.hasNext()) {
System.out.println(iter.next().toString());
}
}

dann kann diese Methode auch mit Listen und Sets jedweder Implementierung umgehen. Würde ich schreiben

static void printAll(ArrayList c) {

dann hätte ich die Methode völlig unnötig auf eine Implementierung eingegrenzt.

Umgekehrt kann ich aber auch aus den garantierten Eigenschaften heraus bessere Algorithmen
schreiben. Zum Beispiel, wenn ich feststellen will wieviele verschiedene Elemente vorhanden sind
(ich also Duplikate nicht mehrfach zählen will), dann muss ich normalerweise für jedes Element
feststellen ob ich es bereits gezählt habe. Bei einem Set ist aber bereits garantiert, dass er nur
verschiedene Elemente enthält, also kann ich schreiben

static int uniqueSize(Collection c) {
if (c instanceof Set) {
return c.size();
} else {
return new HashSet(c).size();
}
}

und mit Überladen durch

static int uniqueSize(Set c) {
return c.size();
}

kann ich das für zur Compile-Time bekannte Sets sogar noch mehr beschleunigen.


Ähnliches gilt auch für die Familie der Maps:

Maps sind Zuordnungen von eindeutigen Schlüsseln auf jeweils einen Wert. - Mehr ist nicht
garantiert, insbesondere wieder keine Reihenfolge.

SortedMaps sind Maps, bei denen eine (Sortier-)Reihenfolge garantiert ist.

Und die Implementierungen (von denen es im Vergleich zu Collections nicht so viele gibt) führen dann
wieder Eigenschaften der jeweiligen Implementierung ein.

HashMap ist eine Map, die intern durch einen Hash realisiert ist, also recht effizient.

IdentityHashMap ist eine Map, die intern durch einen Hash realisiert ist, auf Identität (==) prüft
statt auf Gleichheit (.equals()).

LinkedHashMap ist eine Map, die intern durch einen Hash und eine Linked-List realisiert ist. Sie
garantiert also im Gegensatz zur normalen HashMap eine bestimmte Reihenfolge nämlich insertion-order
oder access-order.

usw.
Post by Andreas Hartmann
- Wie kann ich eine Liste (ArrayList,HashSet,HashTable) sortiert ausgeben?
# sort lexically
@articles = sort @files;
Arrays.sort() bzw. Collections.sort()
Post by Andreas Hartmann
# sort numerically ascending
@articles = sort {$a <=> $b} @files;
Arrays.sort() bzw. Collections.sort()

In Java machst du die Unterscheidung ob numerisch oder lexikalisch sortiert wird, bereits über den
Datentyp der Elemente. D.h. wenn diese das Interface Comparable implementieren, haben sie eine
natürliche Ordnung, nach der sie sortiert werden.

Wenn du etwas anderes als die natürliche Ordnung haben willst und z.B. Strings numerisch sortieren
willst, dann musst du dir einen Comparator dafür schreiben:

final class NumericalOrder implements Comparator<String> {
public int compare(String a, String b) {
try {
return Double.valueOf(a).compareTo(Double.valueOf(b));
catch (NumberFormatException nfe) {
// Fallback to lexical order for non-numbers
return a.compareTo(b);
}
}
public boolean equals(Object o) {
return o instanceof NumericalOrder;
}
}
Post by Andreas Hartmann
# sort numerically descending
@articles = sort {$b <=> $a} @files;
Wie dir schon (alle?) gesagt haben: Collections.sort() macht das, aber du solltest lieber überlegen,
ob du nicht besser einen SortedSet verwendest.
Post by Andreas Hartmann
- Gibt es Klassen in Java, die Perlhashes implementieren?
Nein. Wäre auch nicht sinnvoll, weil es für diesen "Alleskönner" eigentlich keine effiziente
Implementierung gibt. In der Regel braucht man nur einen Teil der Eigenschaften eines Perlhashes,
und dafür gibt es dann die jeweiligen Map Implementierungen.

Es mag dir zwar nicht so erscheinen, aber eigentlich können die Java-Collections mehr als ein
Perlhash. (Nur halt nicht in einer Klasse.)


Aber du kannst dir ja selbst eine Implementierung von Map schreiben, die sich wie ein Perlhash verhält.
Post by Andreas Hartmann
- Gibt es für Java eine vergleichbare Seite wie bei Perl search.cpan.org
oder sind die existierenden Klassen quer übers Internet verstreut und man
findet sie eher durch Zufall?
Nein es gibt keine vergleichbare Seite. Am ehesten kannst du CPAN noch im JSR wiederfinden.

Praktisch alle APIs von Bedeutung gehören aber ohnehin zu J2SE oder J2EE. Weitere spezialisierte
APIs lassen auf den Java-Seiten von Sun finden, oder bei Apache (Jakarta) oder eben über die
zugehörigen JSRs.

Aber da du erst mit Java anfängst, finde ich, solltest du gar nicht so sehr nach weiteren APIs
suchen, sondern erstmal lernen die Standard-API zu beherrschen, wozu auch die Collection-API gehört.
Post by Andreas Hartmann
Allgemein fällt mir auf, daß die Doku eher mau zu sein scheint. Außer der
API ist oft nicht viel vorhanden (ich vermisse die praktischen Beispiele
in der API, die oft viel mehr sagen, als die API selbst).
Ehrlich gesagt finde ich die Doku bei Java besonders gut. Gerade bei Perl und PHP wird man oft mit
unvollständiger Doku zur API und ein paar halbgaren Beispielen abgespeist. Bei Java habe ich
wenigstens die _komplette_ API dokumentiert und dazu oft sogar noch ein paar Beispiele. Für den
Anfang (und auch später als Erinnerungs-Hilfe) sind die Java Tutorials von Sun sehr gut geeignet.
Post by Andreas Hartmann
Falls ich bescheuerte Fragen gestellt haben sollte, würde ich mich freuen,
wenn mir jemand trotzdem bereit wäre, die Augen durch entsprechende
Hinweise zu öffnen.
Bescheuerte Fragen hast du nicht gestellt, aber ich finde, eine gewisse Naivität, hast du im Laufe
des Threads zur Schau gestellt. Das ist völlig in Ordnung, solange du nur zum Spass programmierst,
aber wenn du das als Arbeit machst, musst du dir noch viel Grundlagenwissen aneignen.

cu
Achim Peters
2006-01-09 15:58:48 UTC
Permalink
Ralf Ullrich wrote:

[ein paar sehr schöne Ausführungen]

Bye
Achim
Andreas Hartmann
2006-01-10 07:43:37 UTC
Permalink
Hallo Ralf,

herzlichen Dank für Deine komprimierte Darstellung. Anhand dieser konnte
ich mein bisheriges Verständnis nocheinmal verifizieren bzw. erweitern.
Dies wird sicher nicht der letzte Stand sein, sondern nur der Anfang - wie
Du ja korrekt angemerkt hast, und was ich auch von Anfang an klargestellt
habe. Aber irgendwie muß man eben mal einsteigen. Und da versucht man
eben, bereits Bekanntes mit Neuem zu verknüpfen um das Neue besser zu
verstehen. Daß diese initialen Verknüpfungen sich nicht in allen Fällen
halten lassen, ist mir auch klar. Das gehört IMHO auch zum Lerneffekt.



Grüße,
Andreas

Lesen Sie weiter auf narkive:
Suchergebnisse für '[Newbie] Fragen zu Listen und zu Java allgemein' (Newsgroups und Mailinglisten)
72
Antworten
Warum ist das installieren so kompliziert?
gestartet 2003-10-13 22:34:24 UTC
opensuse-de@opensuse.org
66
Antworten
konzept www.mud.de
gestartet 2006-03-02 13:02:55 UTC
de.alt.mud
38
Antworten
Vector <String, String, Integer>
gestartet 2007-03-06 08:52:32 UTC
de.comp.lang.java
192
Antworten
Development environment for newbie tutorial ...
gestartet 2005-01-21 18:44:13 UTC
de.comp.lang.misc
24
Antworten
Aw: Aw: ---##### SO DAS WAR'S - ICH HAB DIE SCHNAUZE VOLL #####---
gestartet 2003-06-10 11:49:14 UTC
opensuse-de@opensuse.org
Suchergebnisse für '[Newbie] Fragen zu Listen und zu Java allgemein' (Fragen und Antworten)
27
Antworten
Sie haben also 3000 Dollar unter Ihrer Couch gefunden. Was kaufst du?
gestartet 2011-01-06 01:53:32 UTC
klang
7
Antworten
Wie bitte ich um Hilfe bei einem Problem, das über meinen Kopf gekommen ist?
gestartet 2016-07-08 18:47:08 UTC
arbeit
Nicht verwandte, aber interessante Themen
7
Antworten
Wie werden GPUs bei Brute-Force-Angriffen eingesetzt?
gestartet 2016-03-21 19:50:40 UTC
6
Antworten
Vier-Faktor-Authentifizierung
gestartet 2014-09-23 14:52:33 UTC
5
Antworten
Kann jemand meine IP-Adresse stehlen und als eigene verwenden?
gestartet 2020-01-11 04:29:32 UTC
17
Antworten
Können wir trotzdem Vertraulichkeit gewährleisten, wenn Kryptografie verboten ist?
gestartet 2011-04-19 09:41:23 UTC
5
Antworten
Auf allen Geräten plötzlich von Facebook abgemeldet. Sollte ich mir Sorgen machen, gehackt zu werden?
gestartet 2018-09-28 14:07:49 UTC
Loading...