/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Arraylist?
Fra : Gimmer


Dato : 19-03-03 13:30

Jeg skal brige noget som minder om et arraylist!

det skal kunne opbevare en String som bliver lærgeret på en plads som brugen
ved!


dvs man skal fx skrive 1002,"HEJ"
men jeg ved ikke hvorstort det er og det skal ikke oprettes med et max!

nogle forslag?
vh Gimmer



 
 
Morten Nørgaard (19-03-2003)
Kommentar
Fra : Morten Nørgaard


Dato : 19-03-03 13:34

Ikke noget forslag, men et spørgsmål ud af ren nysgerrighed; hvorfor er du
ikke så glad for at bruge en ArrayList?

/Morten

"Gimmer" <Gimmer@pc.dk> wrote in message
news:b59ns6$1t48$1@news.cybercity.dk...
> Jeg skal brige noget som minder om et arraylist!
>
> det skal kunne opbevare en String som bliver lærgeret på en plads som
brugen
> ved!
>
>
> dvs man skal fx skrive 1002,"HEJ"
> men jeg ved ikke hvorstort det er og det skal ikke oprettes med et max!
>
> nogle forslag?
> vh Gimmer
>
>
>



Trygleren [9000] (19-03-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 19-03-03 13:34

> Ikke noget forslag, men et spørgsmål ud af ren nysgerrighed; hvorfor er du
> ikke så glad for at bruge en ArrayList?

Skoleopgave - krav?

--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk/newsgroup





Trygleren [9000] (19-03-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 19-03-03 13:40

Bahbahbaaah - det lyder som et job for... Hashtable!!

<kode>
Hashtable h = new Hashtable();
h.put("1022", new String("Trygleren er den bedste javaprogrammør i hans
ubetingede nærhed");
System.out.println( h.get("1022") );
</kode>

Her angiver 1022 nøglen (dvs. den du henter data på) og input nummer to er
det objekt du gemmer / vil gemme.


--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk/newsgroup




Soren Davidsen (19-03-2003)
Kommentar
Fra : Soren Davidsen


Dato : 19-03-03 14:06

"Trygleren [9000]" <Trygleren@SLETDETHERhesteskelet.dk> writes:

> Bahbahbaaah - det lyder som et job for... Hashtable!!
>
> <kode>
> Hashtable h = new Hashtable();
> h.put("1022", new String("Trygleren er den bedste javaprogrammør i hans
> ubetingede nærhed");
> System.out.println( h.get("1022") );
> </kode>
>
> Her angiver 1022 nøglen (dvs. den du henter data på) og input nummer to er
> det objekt du gemmer / vil gemme.

Du kan ogsaa bruge GNU trove, som faktisk har en TIntObjectHashMap hvor
du kan bruge int som key og object som value ..

http://trove4j.sourceforge.net/

Og, hvis det som Trygleren (hvis brug af new String() jeg ikke skal
kommentere ) antyder er til en skole-opgave, saa kan du sikkert
med fordel bruge lidt tid paa at finde de patterns trove bruger i sit
framework ..


Mvh,

--
___
Soren Davidsen / o\
Math student, ICSMA (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Gimmer (19-03-2003)
Kommentar
Fra : Gimmer


Dato : 19-03-03 14:11

grunden til jeg ikke syntes arraylist er så fed er fordi den vil ikke (for
mig) godtage at der er tomme felter fra 2 til 569 og så igen fra 570 - 599
osv.... det skal være totalt tilfeldigt hvor de skal ligge og hvor stor den
skal være.... det syntes jeg ikke en ArrayList kan klare!
vh Gimmer

"Soren Davidsen" <soren-usenet200303@tanesha.net> wrote in message
news:j3k7evfqvf.fsf@tanesha.net...
> "Trygleren [9000]" <Trygleren@SLETDETHERhesteskelet.dk> writes:
>
> > Bahbahbaaah - det lyder som et job for... Hashtable!!
> >
> > <kode>
> > Hashtable h = new Hashtable();
> > h.put("1022", new String("Trygleren er den bedste javaprogrammør i hans
> > ubetingede nærhed");
> > System.out.println( h.get("1022") );
> > </kode>
> >
> > Her angiver 1022 nøglen (dvs. den du henter data på) og input nummer to
er
> > det objekt du gemmer / vil gemme.
>
> Du kan ogsaa bruge GNU trove, som faktisk har en TIntObjectHashMap hvor
> du kan bruge int som key og object som value ..
>
> http://trove4j.sourceforge.net/
>
> Og, hvis det som Trygleren (hvis brug af new String() jeg ikke skal
> kommentere ) antyder er til en skole-opgave, saa kan du sikkert
> med fordel bruge lidt tid paa at finde de patterns trove bruger i sit
> framework ..
>
>
> Mvh,
>
> --
> ___
> Soren Davidsen / o\
> Math student, ICSMA (_____)
> __ http://www.tanesha.net/ _________________________________(___)_______



Soren Davidsen (19-03-2003)
Kommentar
Fra : Soren Davidsen


Dato : 19-03-03 14:34

"Gimmer" <Gimmer@pc.dk> writes:

> grunden til jeg ikke syntes arraylist er så fed er fordi den vil ikke (for
> mig) godtage at der er tomme felter fra 2 til 569 og så igen fra 570 - 599
> osv.... det skal være totalt tilfeldigt hvor de skal ligge og hvor stor den
> skal være.... det syntes jeg ikke en ArrayList kan klare!

Nej, det kan man ikke, netop fordi det er en List med array features,
og ikke omvendt .. Det vil dog vaere nemt for dig at lave det du
oensker ovenpaa et HashMap - du maa selv impl. add(Object), hvor
udfordringen i denne loesning ligger ):

-- snippet som ikke er testet --

import java.util.*;

public class MyArray {
private Map _storage = null;

public MyArray(Map storage) {
_storage = storage;
}

public void add(int index, Object obj) {
_storage.put(new Integer(index), obj);
}
public Object get(int index) {
// returnerer null hvis index ikke findes.
return _storage.get(new Integer(index));
}

public static void main(String [] args) {
MyArray arr = new MyArray(new HashMap());
arr.add(1022, "Hej MyArray!");
System.out.println("Hvad? " + arr.get(1022));
}

}

--


Mvh,

--
___
Soren Davidsen / o\
Math student, ICSMA (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Trygleren [9000] (19-03-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 19-03-03 14:09

> Og, hvis det som Trygleren (hvis brug af new String() jeg ikke skal
> kommentere ) antyder er til en skole-opgave

Husk nu på (som du selv skriver), at er der tale om en skoleopgave, kan der
også være tale om en nybegynder i java. Derfor new String. Du skal ikke
begynde at belære mig om java

Desuden er det irrelevant hvordan du skriver det - din compiler skal nok
sørge for at filtrere det ekstra 'snavs' fra =)

--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk/newsgroup




Soren Davidsen (19-03-2003)
Kommentar
Fra : Soren Davidsen


Dato : 19-03-03 14:36

"Trygleren [9000]" <Trygleren@SLETDETHERhesteskelet.dk> writes:

> > Og, hvis det som Trygleren (hvis brug af new String() jeg ikke skal
> > kommentere ) antyder er til en skole-opgave
>
> Husk nu på (som du selv skriver), at er der tale om en skoleopgave, kan der
> også være tale om en nybegynder i java. Derfor new String. Du skal ikke
> begynde at belære mig om java

Netop derfor skal man jo ikke laere daarlige kode-vaner fra sig .. Ok, kan
godt vaere at jeg ikke skulle have postet kode lige foer, er jo at bede om at
faa smaek nu .

> Desuden er det irrelevant hvordan du skriver det - din compiler skal nok
> sørge for at filtrere det ekstra 'snavs' fra =)

Jeg mener netop dette blev diskuteret for et par uger siden her i gruppen,
og outcome var at du tager fejl .


Mvh,

--
___
Soren Davidsen / o\
Math student, ICSMA (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Trygleren [9000] (19-03-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 19-03-03 14:42

> Jeg mener netop dette blev diskuteret for et par uger siden her i gruppen,
> og outcome var at du tager fejl .

Hmm... jeg henleder din opmærksomhed til denne artikel:
www.hesteskelet.dk/bevis


--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther

www.hesteskelet.dk/newsgroup




Janus Engstr0m (20-03-2003)
Kommentar
Fra : Janus Engstr0m


Dato : 20-03-03 16:08

Trygleren [9000] wrote:

>>Jeg mener netop dette blev diskuteret for et par uger siden her i gruppen,
>>og outcome var at du tager fejl .
>>
>
> Hmm... jeg henleder din opmærksomhed til denne artikel:
> www.hesteskelet.dk/bevis
>
>

Den var god *g*. Well, så vidt jeg husker fra en tidligere diskussion
omkring dette emne, er der forskel på at bruge eller ikke bruge new ved
String. Bytecoden var (så vidt jeg husker) længere ved brugen af new.
Men det afhænger selvfølgelig af compileren, og hvilken der var brugt i
dette tilfælde kan jeg ikke huske, det er også over 1 år siden.

/janus




Mikkel Bundgaard (21-03-2003)
Kommentar
Fra : Mikkel Bundgaard


Dato : 21-03-03 14:42

On Thu, 20 Mar 2003 16:07:55 +0100, Janus Engstr0m wrote:

> Den var god *g*. Well, så vidt jeg husker fra en tidligere diskussion
> omkring dette emne, er der forskel på at bruge eller ikke bruge new ved
> String. Bytecoden var (så vidt jeg husker) længere ved brugen af new.
> Men det afhænger selvfølgelig af compileren, og hvilken der var brugt i
> dette tilfælde kan jeg ikke huske, det er også over 1 år siden.
Du har ganske ret. Et lille eksempel (med brug af javac fra version
1.4.1_01-linux. Det gav ingen forskel med optimering -O slået til/fra ):

public class TestNewString {
public void withoutNew() {
String t1 = "Hej Med Dig";
}

public void withNew() {
String t2 = new String("Ny streng");
}
}

bliver til (med kommentarer)

Compiled from TestNewString.java
....

Method void withoutNew()
0 ldc #2 <String "Hej Med Dig"> // Push det andet element fra
// runtime constant pool på stakken
2 astore_1 // Gem det som ligger på stakken som
// lokal variabel 1 i den aktuelle frame
3 return

Method void withNew()
0 new #3 <Class java.lang.String> // Opret en ny reference til en
// String på toppen af stakken
3 dup // Dupliker toppen
4 ldc #4 <String "Ny streng"> // Push det fjerde element fra
// runtime constant pool på stakken
6 invokespecial #5 <Method java.lang.String(java.lang.String)>
// Kald konstruktøren for næstøverste element på stakken
// (en ref til en String) med det argument,
// der ligger øverst på stakken
9 astore_1
10 return

For den nysgerrige kan The Java Virtual Machine Specification findes på
http://java.sun.com/docs/books/vmspec/
Denne bog indeholder bl.a. en oversigt over de forskellige byte code
instruktioner.
--
Mikkel Bundgaard
Student at IT University of Copenhagen
Codito, Ergo Sum

Martin Kofoed (21-03-2003)
Kommentar
Fra : Martin Kofoed


Dato : 21-03-03 13:25

Soren Davidsen wrote:

> Jeg mener netop dette blev diskuteret for et par uger siden her i gruppen,
> og outcome var at du tager fejl .

Det er også korrekt.

Jeg quoter lige fra "Effective Java":

===
As an extreme example of what not to do, consider the following statement:

String s = new String("silly"); // DON'T DO THIS
===

Ovenstående kreerer en ny string instans hver gang den kører, som er helt
unødvendig. Samtidig har det også rimelig heftig betydning for performance.
For sjov lavede jeg nedenstående eksperiment, der tog 16 sekunder om at
fuldføre. Når jeg erstatter ' = new String("hej")' med ' = "hej"', tager
det under et sekund.

===
long timeSpent = System.currentTimeMillis();
int objects = 100000000;
String test;

for (int i = 0; i < objects; i++) {
test = new String("hej");
}

long now = System.currentTimeMillis();
timeSpent = (now - timeSpent) / 1000;
System.out.println("Time spent: " + timeSpent);
===

--

Martin

Lars Dam (19-03-2003)
Kommentar
Fra : Lars Dam


Dato : 19-03-03 20:16

On Wed, 19 Mar 2003 13:29:46 +0100
"Gimmer" <Gimmer@pc.dk> wrote:

> Jeg skal brige noget som minder om et arraylist!
>
> det skal kunne opbevare en String som bliver lærgeret på en plads som brugen
> ved!
>
>
> dvs man skal fx skrive 1002,"HEJ"
> men jeg ved ikke hvorstort det er og det skal ikke oprettes med et max!


>
> nogle forslag?

Brug et hashmap istedet, med nummeret som nøgle og strengen som værdi.

> vh Gimmer

vh. ld

Gimmer (20-03-2003)
Kommentar
Fra : Gimmer


Dato : 20-03-03 08:15

Mange tak!
vh Gimmer
"Lars Dam" <larsdam___YeahNoUnderscores_____@______post2.tele.dk> wrote in
message
news:20030319201615.45c183a5.larsdam___YeahNoUnderscores_____@______post2.te
le.dk...
> On Wed, 19 Mar 2003 13:29:46 +0100
> "Gimmer" <Gimmer@pc.dk> wrote:
>
> > Jeg skal brige noget som minder om et arraylist!
> >
> > det skal kunne opbevare en String som bliver lærgeret på en plads som
brugen
> > ved!
> >
> >
> > dvs man skal fx skrive 1002,"HEJ"
> > men jeg ved ikke hvorstort det er og det skal ikke oprettes med et max!
>
>
> >
> > nogle forslag?
>
> Brug et hashmap istedet, med nummeret som nøgle og strengen som værdi.
>
> > vh Gimmer
>
> vh. ld



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste