Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java - ArrayList - Jak nejlépe upravit pořadí?

Dobrý den,

Vytvořil jsem dva ArrayList. Avšak, udělal jsem to tím nejjednodušším způsobem respektive jiný rozumný způsob mě nenapadá.

Výsledkem toho je, že jsou ve špatném pořadí. Proto je nutné to upravit.

...
for (var i = 0; i < 18; i++) {
    var path = paths2.get(39);
    paths2.remove(39);
    paths2.add(0, path);
    path = paths.get(39);
    paths.remove(39);
    paths.add(0, path);
}
...

Přesto se chci zeptat, jestli, prosím Vás, neexistuje jednodušší způsob pomocí Streamu?

Děkuji

Předmět Autor Datum
Určitě existuje rozumný způsob jak je mít ve správném pořadí hned a bez podobných opičáren.
Wikan 14.06.2019 07:25
Wikan
Už zase? Nenapadá mě způsob, jak to napsat, aby to bylo ve správném pořadí. Ale na to jsem se nepta…
MichalDM 14.06.2019 10:47
MichalDM
Takže nechceš vědět, jak to udělat dobře. Chceš to jenom udělat jednodušeji špatně. Sorry, ale v tom…
Wikan 14.06.2019 10:50
Wikan
Ne, vytvořil jsem to (pravděpodobně) nejlepším způsobem. ASI by to šlo upravit, ale ve výsledku by b…
MichalDM 14.06.2019 11:51
MichalDM
Co je na tom poradit spatne? Jak je to spravne?
MaSo 14.06.2019 19:41
MaSo
Jak jsem řekl, vytvořil jsem objekty nejjednodušším způsobem, ale výsledkem je, že je to špatně seřa… poslední
MichalDM 23.06.2019 00:26
MichalDM

Ne, vytvořil jsem to (pravděpodobně) nejlepším způsobem. ASI by to šlo upravit, ale ve výsledku by byl kód mnohem složitější. A ten už teď není jednoduchý.

Ve srovnání s tím, je úprava pořadí drobnost. Problém je, že tímto způsobem je to nelogické. Proč prvky odebírat a přidávat, když je ve výsledku jenom upravené pořadí.

Nešlo by to udělat pomocí sorted v streamu?

Díky

Jak jsem řekl, vytvořil jsem objekty nejjednodušším způsobem, ale výsledkem je, že je to špatně seřazené respektive první prvek není na začátku.

Stačí si to představit jako dvě pole, z kterých si vytvořil jedno, ale v nesprávném pořadí.

V tomhle případě to je jednodušší udělat takhle.

...
paths = Stream.concat(paths.subList(22, 40).stream(), paths.subList(0, 22).stream()).collect(Collectors.toCollection(ArrayList::new));
paths2 = Stream.concat(paths2.subList(22, 40).stream(), paths2.subList(0, 22).stream()).collect(Collectors.toCollection(ArrayList::new));
...

Nevím, jestli je to ideální, ale určitě lepší než předchozí varianta.

I přesto děkuji

Zpět do poradny Odpovědět na původní otázku Nahoru