OOP 100 objekte erzeugen

pisco

Bekanntes Mitglied
Hey Leute,

also ich muss mir 100 verschiedene Objekte erzeugen lassen und dachte ich mach das mal sooo:
PHP:
for(int i=0; i<=100; i++) {
      c++; 
     Objekttyp ic = new Objekttyp();

}

wäre es damit möglich 100 verschiedene Objekte zu erzeugen bzw wenn nicht so wie dann?

glg
 
Das erstellt 100 neue Objekte. Aber der Code ist überflüssig, da die Objekte nirgends gespeichert werden 😉

Hey danke erstmal für eure Antworten

mhmm also wie speicher ich die objekte?

ich möchte ,dass ich 100 Objekte erstellen kann und danach mit ihnen arbeiten kann ,wie als wären es ganz normale objekte...

glg und danke schonmal
 
einfach die daten in nem Vector speichern

Java:
import java.util.Vector;
Vector<TYP> vector=new Vector<TYP>();
for(int i=0; i<100; i++)
{
	TYP object=new TYP();
	vector.add(object);
}

wobei TYP durch den namen der Klasse zu ersetzen ist
 
hab mir grad die api ein bissl durchgelesen zu java.util.vector


Kann mir vll jemand den direkten Unterschied zwischen array und vector erklären?

glg
 
Jetzt die 10.000 Dollar Frage. Wenn mit new eine neues Objekt erstellt wird, dann is es auch wirklich neu und keins vorher schon mal vorhandenes !!!!
 
Jetzt die 10.000 Dollar Frage. Wenn mit new eine neues Objekt erstellt wird, dann is es auch wirklich neu und keins vorher schon mal vorhandenes !!!!

Java:
for(int i=0; i<=100; i++) {
      c++; 
     Objekttyp ic = new Objekttyp();

}

also laut meinem Code ist jeder Objektname... i1,i2,i3..i100

ergo sind alle 100 Objekte verschieden... nur her mit den 10 000 Dollar ^^

glg
 
geld zu verschenken hab ich keins. ich wollte sagen nur, dass sich auch wirklich Alle voneinander unterscheiden! keins is gleich"! toll oder?
 
Java:
for(int i=0; i<=100; i++) {
      c++; 
     Objekttyp ic = new Objekttyp();

}

also laut meinem Code ist jeder Objektname... i1,i2,i3..i100

Nein, so kannst du die Variablen nicht benennen. Du musst schon eine Liste oder ein Array nehmen.

Kann mir vll jemand den direkten Unterschied zwischen array und vector erklären?
Ein Array hat eine feste Größe, ein Vector kann beliebig viele Objekte aufnehmen. Nehm aber statt Vector lieber eine List.
 
ist

Java:
Objekttyp ot[] = new Objekttyp [100];
for (int i=0;i<100;i++)
 {
  ot[i]=new Objekttyp(i);
  System.out.println(ot[i].toString());
 }

hilfreich?

Ich setzte vorraus dass der Konstruktor des Objekttyps einen Integer nimmt. Dass ich ihm i übergebe ist nur um die Objekte zu unterscheiden.
 
geld zu verschenken hab ich keins. ich wollte sagen nur, dass sich auch wirklich Alle voneinander unterscheiden! keins is gleich"! toll oder?

Wie bist du denn drauf :autsch: ?
@pisco: Vector ist "veraltet", wird heute nur noch als synchronisierte Liste verwendet. Wenns nicht um Multithreading geht, kann man eine andere Implementierung der List verwenden, nämlich ArrayList (ArrayList (Java Platform SE 6)). Diese verwendet intern auch nicht mehr als ein Array. Du kannst so deine Liste verwenden:
Java:
List<Objekttyp> list = new ArrayList<Objekttyp>();
for (int i = 0; i < 100; i++) {
    list.add(new Objekttyp(i));
}
 
gut ... ob man nun Vector oder sonst ne implementierung von List nimmt ... sollte eigentlich egal sein ...

ich hab nur Vector als beispiel genommen weil ich damit selbst viel arbeite *ja .. unter J7 ... ansonsten erkläre mir bitte fachlich konkret was an Vector so veraltet ist ?*
Vector ist eine einfach und zuverlässig implementierung von List

sein größe ist dynamisch und man kann auf die elemente in der reihenfolge zugreifen wie sie hinzugefügt wurden ..

außerdem sollte sich Vector von ArrayList nicht so groß unterscheiden *sorry ... hab grad andere dinge zu tun als mich durch den source zu wühlen um die unterschiede rauszukramen*


@emailundlos

sorry ... aber dein humor trifft mich nicht ...
warum muss man denn einem objekt einen parameter übergeben nur um dieses von anderen der selben klasse unterscheiden zu können ?
wichtig ist nur das wenn du zwei verschiedene objekte hast auch zwei verschiedene referenzen auf diese hast um halt mit der einen referenz auf das eine objekt und mit der anderen auf das andere objekt zugreifen zu können

@TO

rein zufällig weis ich das es in PHP sowas gibt
PHP:
$$var_counter
womit du eine variable erzeugen kannst welche als nahmen den inhalt von $var_counter hat ...
so etwas ist in JAVA nicht möglich
wenn du eine variable als
Java:
<T> vc;
deklarierst ... dann heißt diese auch so
nur weil du einen counter davor hast der als
Java:
int c;
deklariert ist heißt es nicht das dann aus "vc" -> "v1", "v2" usw wird ...
da hast du etwas missverstanden
*bin auf php gekommen weil du in deinem post php-tags verwendet hast*
 
gut ... ob man nun Vector oder sonst ne implementierung von List nimmt ... sollte eigentlich egal sein ...

ich hab nur Vector als beispiel genommen weil ich damit selbst viel arbeite *ja .. unter J7 ... ansonsten erkläre mir bitte fachlich konkret was an Vector so veraltet ist ?*
Vector ist eine einfach und zuverlässig implementierung von List

sein größe ist dynamisch und man kann auf die elemente in der reihenfolge zugreifen wie sie hinzugefügt wurden ..

außerdem sollte sich Vector von ArrayList nicht so groß unterscheiden *sorry ... hab grad andere dinge zu tun als mich durch den source zu wühlen um die unterschiede rauszukramen*

Beim Vector ist jede Methode synchronized. Das allerdings löst nicht das Problem der ConcurrentModificationException wie immer alle denken.
 
gut ... ob man nun Vector oder sonst ne implementierung von List nimmt ... sollte eigentlich egal sein ...

ich hab nur Vector als beispiel genommen weil ich damit selbst viel arbeite *ja .. unter J7 ... ansonsten erkläre mir bitte fachlich konkret was an Vector so veraltet ist ?*
Vector ist eine einfach und zuverlässig implementierung von List

sein größe ist dynamisch und man kann auf die elemente in der reihenfolge zugreifen wie sie hinzugefügt wurden ..

außerdem sollte sich Vector von ArrayList nicht so groß unterscheiden *sorry ... hab grad andere dinge zu tun als mich durch den source zu wühlen um die unterschiede rauszukramen*
du brauchst keinen sourcen um unterschiede zu finden... javadoc reicht schon
"As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized. "

also nix mit java7, sondern schon seit mehr als 10Jahre ist es so, dass Vector in den seltesten Faellen die richtige Wahl einer Listimplementierung ist. Vector gibt es nur aufgrund der rueckwaertskompatibilitaet.
 
^... und natürlich weil die Swing API oft auf Vector besteht 😉

Aber ansonsten gibt es keinen Grund Vector zu nutzen, ist nunmal legacy.

Wenn man jetzt den Sachverstand eines 12 jährigen hätte würde man die Empfehlung Vector zu nutzen das eine "Fail Info" nennen 😉
 
Ich wollte nur antworten auf die Frage. [...]
Inhaltlich hab ich überhaupt nichts gegen deine Posts, aber bitte überdenk mal die Art, mit welcher du dich mitteilst. Wir waren doch alle auch mal Anfänger und stellten "dumme" (eben nicht!) Fragen 🙂

@pisco: Mir ist aufgefallen, dass wir deine Frage noch nicht beantworteten, warum du denn ein Vector (oder ArrayList, LinkedList oder sonst beliebige List) an Stelle des Arrays verwenden sollst.
Das Array in Java ist ein Sprachfeature, welches leider weder besonders objektorient ist, noch sich gut mit anderen gewissen Sprachfeatures verträgt (Generics z.B.).
In Java gibts IMHO genau drei Gründe, warum man Arrays verwenden sollte. 1. Man lernt Java und muss Arrays kennenlernen 2. Man hat (z.B. auf mobilen Endgeräten) Speicher- oder CPU-Engpässe - dies ist aber wirklich der Ausnahmefall 3. Man implementiert einen eigenen Datentypen (wie z.B. ArrayList oder Vector).
In allen anderen Fällen kann man eine List (Java Platform SE 6) verwenden.
In der Praxis verwendet man meist eine folgender vier Implementierungen (welche in der Java API sind):
- ArrayList (Java Platform SE 6) ist eine Liste, welche im Hintergrund mit einem Array arbeitet
- Vector (Java Platform SE 6) ist fast das gleiche, allerdings ist alles synchronized und darum langsamer. Wird - wie bereits erwähnt - nur für Multithreading verwendet.
- LinkedList (Java Platform SE 6) ist eine Implementierung einer Linked List, also jedes Element zeigt auf das nächste Element (und bei einer DoubleLinkedList noch auf den Vorgänger). Somit sind Zugriffe auf einen beliebigen Index langsamer als bei der ArrayList.
- Stack (Java Platform SE 6) ist eine Implementierung eines Stacks, welche auf Vector basiert.
 

Zurück
Oben