/ 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
Array af integers til vector?
Fra : Katrine Grønhøj


Dato : 17-04-02 20:12

Jeg håber en eller anden kan hjælpe mig med dette problem:

Jeg har et array af integers, hvor jeg gerne vil have slettet (fjernet) de
steder, hvor værdien er lig 0. Min tanke er så, at jeg kan oprette en
midlertidigt Vector, hvor jeg indlæser mine værdier fra mit array. Jeg
sletter så de elementer i Vectoren, der har værdien 0, hvorefter jeg fylder
mine nye data over i mit array.

Kan det overhovedet lade sig gøre, når mit array er af primitive datatyper,
og en Vector skal indeholde objekter?

Er der nogen, der har en (mere eller mindre) genial løsning?

Mvh
Katrine



 
 
Soeren Dalby (17-04-2002)
Kommentar
Fra : Soeren Dalby


Dato : 17-04-02 21:08

Ja, det kan det godt, men du skal bruge objekt indkapslingen
java.lang.Integer til at indsætte dine heltal i listen.

Hvis dit array har en maks-størrelse vil det af samme grund være bedre at
benytte et int[], da ovenstående er meget dyrt i forhold til operationen. Og
hvis det ikke er en skoleopgave, bør du kigge på ArrayList i stedet for
Vector.


--
Med venlig hilsen / best regards

Soeren Dalby


"Katrine Grønhøj" <katrine@anarchy.dk> wrote in message
news:3cbdc921$0$78777$edfadb0f@dspool01.news.tele.dk...
> Jeg håber en eller anden kan hjælpe mig med dette problem:
>
> Jeg har et array af integers, hvor jeg gerne vil have slettet (fjernet) de
> steder, hvor værdien er lig 0. Min tanke er så, at jeg kan oprette en
> midlertidigt Vector, hvor jeg indlæser mine værdier fra mit array. Jeg
> sletter så de elementer i Vectoren, der har værdien 0, hvorefter jeg
fylder
> mine nye data over i mit array.
>
> Kan det overhovedet lade sig gøre, når mit array er af primitive
datatyper,
> og en Vector skal indeholde objekter?
>
> Er der nogen, der har en (mere eller mindre) genial løsning?
>
> Mvh
> Katrine
>
>



Mikkel Bundgaard (17-04-2002)
Kommentar
Fra : Mikkel Bundgaard


Dato : 17-04-02 21:17

Katrine Grønhøj <katrine@anarchy.dk> wrote:

> Jeg håber en eller anden kan hjælpe mig med dette problem:
>
> Jeg har et array af integers, hvor jeg gerne vil have slettet
> (fjernet) de steder, hvor værdien er lig 0. Min tanke er så, at
> jeg kan oprette en midlertidigt Vector, hvor jeg indlæser mine
> værdier fra mit array. Jeg sletter så de elementer i Vectoren,
> der har værdien 0, hvorefter jeg fylder mine nye data over i mit
> array.
>
> Kan det overhovedet lade sig gøre, når mit array er af primitive
> datatyper, og en Vector skal indeholde objekter?
>
> Er der nogen, der har en (mere eller mindre) genial løsning?
>
> Mvh
> Katrine
Hej Katrine

Det er lettere (og hurtigere) at gennemløbe arrayet og tælle alle
forekomster af 0 og derefter oprette et nyt array med plads til alle
elementerne undtagen antallet af 0 for til sidst at overføre
elementerne. Nedenstående er et eksempel på, hvordan det kan gøres:

public static void main(String[]args) {
Random rnd = new Random();
int[] fromArray = new int[100];
int[] toArray;
int numZeros = 0;

// Lav et array indeholdende tal mellem 0 og 9
for ( int i = 0; i < fromArray.length; i++ )
fromArray[ i ] = rnd.nextInt() % 10;

// Tæl antallet af 0
for ( int i = 0; i < fromArray.length; i++ )
if ( fromArray[ i ] == 0 )
numZeros++;

// Opret et nyt array med plads til alle elementer
// undtagen dem, der indeholder 0.
toArray = new int[ fromArray.length - numZeros ];

// Overfør alle elementer undtagen dem,
// der indeholder 0
for ( int i = 0, j = 0; i < fromArray.length; i++ )
if ( fromArray[ i ] != 0 )
toArray[ j++ ] = fromArray[ i ];
}

Håber du kan bruge det til noget
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum



Bertel Lund Hansen (17-04-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-04-02 23:34

Mikkel Bundgaard skrev:

>Det er lettere (og hurtigere) at gennemløbe arrayet og tælle alle
>forekomster af 0 og derefter oprette et nyt array ...

Det er *endnu* lettere og hurtigere at gennemløbe arrayet og
rykke egentlige værdier nedefter så de tomme pladser fyldes ud -
hvis man altså må ændre i originalen.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Torben Brandt (17-04-2002)
Kommentar
Fra : Torben Brandt


Dato : 17-04-02 23:44

Bertel Lund Hansen <nospam@lundhansen.dk> skrev:
> Mikkel Bundgaard skrev:
>
> >Det er lettere (og hurtigere) at gennemløbe arrayet og tælle alle
> >forekomster af 0 og derefter oprette et nyt array ...
>
> Det er *endnu* lettere og hurtigere at gennemløbe arrayet og
> rykke egentlige værdier nedefter så de tomme pladser fyldes ud -
> hvis man altså må ændre i originalen.
>
Helt enig, men kun hvis det ikke gør noget at arrayet er "længere end
data" bagefter.

mvh Torben


Martin Møller Bæk (17-04-2002)
Kommentar
Fra : Martin Møller Bæk


Dato : 17-04-02 22:37


Katrine Grønhøj wrote:

> Jeg håber en eller anden kan hjælpe mig med dette problem:
>
> Jeg har et array af integers, hvor jeg gerne vil have slettet (fjernet) de
> steder, hvor værdien er lig 0. Min tanke er så, at jeg kan oprette en
> midlertidigt Vector, hvor jeg indlæser mine værdier fra mit array. Jeg
> sletter så de elementer i Vectoren, der har værdien 0, hvorefter jeg fylder
> mine nye data over i mit array.
>
> Kan det overhovedet lade sig gøre, når mit array er af primitive datatyper,
> og en Vector skal indeholde objekter?


Hvis du ønsker at bruge en Vector og ikke et andet array, som
foreslået andetsteds, så kan du bruge en wrapperklasse.
Wrapperklasser er objectudgaver af primitiverne. Disse hedder
(næsten)det samme som primitiverne, blot med stort begyndelsesbogstav,
dvs. Integer, Double, Bool, Character osv. Hvis du vil indsætte
heltallet 'h' i Vectoren 'vec', så kan du gøre følgende:
   vec.addElement(new Integer(h));

Nå du skal have den ud igen, og du ved den har index 'i'
kan du bruge:
   int k = ((Integer)vec.get(i)).intValue();

>
> Er der nogen, der har en (mere eller mindre) genial løsning?


Men arrayløsningen er nok nemmere.

>
> Mvh
> Katrine
>


Mvh.
Martin Møller Bæk



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste