Avatar billede svarrenabe Nybegynder
10. april 2003 - 15:07 Der er 17 kommentarer og
1 løsning

Få fat i en søjle i et Array

Hvordan får jeg fat i en søjle fra et multidimensionelt array:
Hvordan får jeg foreksempel fat i søjle nr. 2 i min teststreng("hej2", "hej5" skal returneres i min samplemethod)

public String[] sampleMethod()
{
String[][] teststreng = {{"hej1","hej2","hej3"},{"hej4","hej5","hej6"},};
return teststreng[søjle2];//Hvordan få jeg søjle 2
}
Avatar billede arne_v Ekspert
10. april 2003 - 15:09 #1
Du piller dem ud i en løkke.
Avatar billede arne_v Ekspert
10. april 2003 - 15:10 #2
String[] res = new String[3];
for(int i = 0; i < res.length; i++) {
  res[i] = teststreng[1][i];
}
return res;
Avatar billede svarrenabe Nybegynder
10. april 2003 - 15:12 #3
Det var ikke lige det jeg havde tænkt mig, er der ikke en smartere måde, de arrays jeg skal behandle er ret store, og der er mange af dem, ville gerne undgå forløkken!!!
Avatar billede arne_v Ekspert
10. april 2003 - 15:16 #4
I dit special-tilfælde kan du også bruge:

return teststring[1];
Avatar billede arne_v Ekspert
10. april 2003 - 15:17 #5
Hov jeg vrøvler.

Jeg henter jo rækker ikke søjler.
Avatar billede arne_v Ekspert
10. april 2003 - 15:18 #6
I Begge tilfælde.

Det er:

        String[][] teststreng = { { "hej1", "hej2", "hej3" }, {
                "hej4", "hej5", "hej6" }, };
        String[] res = new String[2];
        for (int i = 0; i < res.length; i++) {
            res[i] = teststreng[i][1];
        }

Du skal bruge for at få 2 og 5 ud.
Avatar billede svarrenabe Nybegynder
10. april 2003 - 15:19 #7
yep, men kan man ikke hente en SØJLE uden den forbistrede forløkke!!!??
Avatar billede arne_v Ekspert
10. april 2003 - 15:19 #8
Og den kan ikke optimeres fordi de data du skal bruge
ikke ligger kontinuert.
Avatar billede svarrenabe Nybegynder
10. april 2003 - 15:20 #9
Jeg har det andet kørende, men det er ret sløvt
Avatar billede arne_v Ekspert
10. april 2003 - 15:20 #10
Det mener jeg ikke.

Fordi de ligger på den måde de gør i hukommelsen.
Avatar billede arne_v Ekspert
10. april 2003 - 15:22 #11
Det er formentligt langsomt.

Kan du ikke "reorganisere" din kode så du kan undgå problemet ?
Avatar billede svarrenabe Nybegynder
10. april 2003 - 15:24 #12
Desværre ikke, det er til en del af et større program, så dataene ligger som de gør og kan ikke ændres uden at det vil involvere mange andre
Avatar billede svarrenabe Nybegynder
10. april 2003 - 15:25 #13
Jeg lar den lige stå åbent lidt for at se om der er en der har en bedre løsning på problemet, ellers skal du nok få pointene!!
Avatar billede codemon Nybegynder
10. april 2003 - 19:44 #14
vær opmærksom på at multidimensionelle arrays i java er, arrays af arrays.

Derfor er det ikke sikkert at der er en hel søjle bare fordi element mit2DimensionelleArray[0] har 7 elementer.

dvs. pas på ArrayIndexOutOfBounceException da mit2DimensionelleArray[4] måske kun har 3 elementer.

Jeg går ud fra at når du skriver søjle så mener du søjlerne i et to-dimensionelt array. (kolonnerne i f.h.t. rækkerne)
Avatar billede codemon Nybegynder
10. april 2003 - 19:47 #15
og nej du kan ikke komme løkken, men dine arrays skal altså også være enorme hvis det skal tage nogen nævneværdi tid. Prøv selv at lave en test, et par millioner elementer arbejdes der hurtigt igennem på dagens computere.
Avatar billede codemon Nybegynder
10. april 2003 - 19:57 #16
alternativt kunne du wrappe en collection klasse omkring dit 2-dimensionelle array der gav et bestemt element fra forudbestemt index når der blev spurgt på et index i din "søjle" hvis det kun er få elementer der skal læses, så hele arrayet ikke behøver at løbes igennem for at udtrække hele søjlen.

noget lign.

public class Soejle
{
  private String[][] toDimArray;
  private int søjlenr;
 
  public Soejle(String[][] toDimArrayVærdi, int søjlenrVærdi)
  {
    toDimArray = toDimArrayVærdi;
    søjlenr = søjlenrVærdi;
  }
 
  public String getElement(int indeks)
  {
    return toDimArray[indeks][søjlenr];
  }
}

dette kan også gøres de steder i koden du har brug for et element fra søjlen, men det er nok pænere at pakke det ind i et objekt.
Avatar billede _carsten Nybegynder
10. april 2003 - 20:08 #17
Det kan godt være du tror jeg er skør, men da du på en eller anden måde får pumpet data i dit array, og hvis det altid er kolonne/søjle 2 du vil hente data fra, hvorfor så ikke vende dit array, således at dine søjler bliver til rækker og rækker til søjler.

Carsten
Avatar billede svarrenabe Nybegynder
11. april 2003 - 09:23 #18
Da multidimentionelle arrays er arrays i arrys, som codemon skriver kan man vel ikke "bare" vende sit array, jeg kan godt se at der nok ikke er nogen vej uden om løkken, men det er der ikke noget at gøre ved, jeg takker for hjælpen, men tildeler arne v pointene da der ikke er nogen bedre løsning end den han kom med i første omgang, håber det er i orden!! :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester