Arrays#asList

  • Antworten:4
Mac Systems
  • Forum-Beiträge: 1.727

23.01.2010, 15:55:25 via Website

Moin,

mal so aus reinem Interesse:

Ich habe z.b eine Enum, will daraus eine Liste machen und einen Wert entfernen:

1List<DasEnum> list = Arrays.asList(DasEnum.values());
2list.remove(DasEnum.BOESER_WERT);
3return list;

Leider funtzt das ganze nicht da die Liste von Arrays nicht modifizierbar ist. Daher muss man das ganze selbst in einer schleife füllen.

Im dem Java JDK ist das möglich: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html#asList%28T...%29
Unter Android wird geschrieben das die Liste nicht Modifizierbar ist: http://developer.android.com/reference/java/util/Arrays.html#asList%28T...%29

Was soll dieser Mist ?

- Mac

— geändert am 23.01.2010, 15:56:04

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Jörg Jahnke
  • Forum-Beiträge: 5

01.03.2010, 14:35:08 via Website

Versuch's doch mal folgendermaßen

1List<DasEnum> list = Arrays.asList(DasEnum.values());
2List<DasEnum> list2 = new ArrayList<DasEnum>(list);
3list2.remove(DasEnum.BOESER_WERT);
4return list2;

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

02.03.2010, 09:07:26 via Website

Sicher geht das, aber ich wollte auch nicht zig Objekte erzeugen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Re Do
  • Forum-Beiträge: 8

03.03.2010, 12:27:47 via Website

Wie sieht es mit einer LinkedList aus? Die hat den Vorteil, dass du wesentlich einfacher Elemente löschen kannst als aus einer ArrayList. Zudem läufst du nicht Gefahr, dass die Größe deines internen Feldes zu klein wird.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

04.03.2010, 10:30:44 via Website

Das kann ich bei 8 Enums momentan ausschliessen, ausser die API hat die 16 Elemente ebenfalls reduziert, wäre eine Möglichkeit.
Dennoch ist das Arrays#asList weiterhin echt Mist, man sollten denen mal einen Bug deswegen aufmachen

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten