Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>()

volcanos

Bekanntes Mitglied
Die Frage ist, wieso kommt bei der Varags-Methode
...
"List<Integer> numbersList = Arrays.asList();"
...
eine java.lang.UnsupportedOperationException ?

Wenn man das Gleiche aber in Main mit fixen Integer-Werten macht, dann kommt keine java.lang.UnsupportedOperationException ?
Hier geht
"List<Integer> numbersList = Arrays.asList(60, 20, 120);"

Bei der Methode muss man
"List<Integer> numbersList = new ArrayList<>();"
schreiben, sodass es funktioniert !

Java:
public class GenericsDemo
{
    // Main
    public static void main(String... args)
    {
        // Varargs ohne Generics:
        sumA(1,2,3,4,5,6,7,8,9,0);
      
        // Args mit Generics:
        int result = 0;
        List<Integer> numbersList = Arrays.asList(60, 20, 120);        // Addition korrekt
        for(var nL : numbersList)                    // oder int
        result += nL;
        System.out.println(result);
      
        // Varargs mit Generics (Addition):
        sumB(60, 20, 120);             
    }


    // Varargs ohne Generics (Addition):
     static void sumA(int... numbers)
     {
         int result = 0;
         for(int i : numbers)
         { result += i; }

         System.out.println(result);
     }
  
  
     // Varargs mit Generics (Addition):                     
     static void sumB(int... numbersX)
     {
         int result = 0;
         // List<Integer> numbersList = Arrays.asList();        // java.lang.UnsupportedOperationException
         List<Integer> numbersList = new ArrayList<>();            // .add korrekt
         for(var i : numbersX)                                     // oder int
         { numbersList.add(i); }
          
         for(var nL : numbersList)                                // oder int
         { result += nL; }
         System.out.println(result);
     }
}
 
Zuletzt bearbeitet:

Robert Zenz

Top Contributor
Ich zitiere mal kurz die Javadoc von Arrays.asList:

Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)

Auszerdem ist deine Aussage dass die Erzeugung zu einer UnsupportedOperationException fuehrt falsch, die Ausnahme wird geworfen wenn du versuchst ein Element hinzuzufuegen, was ja Sinn macht, weil die Liste nicht erweiterbar ist.
 

volcanos

Bekanntes Mitglied
"Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)"

Also auf deutsch:
Gibt eine Liste fester Größe zurück, die durch das angegebene Array unterstützt wird.
(Änderungen an der zurückgegebenen Liste werden in das Array "write-through" geschrieben.)

Write Through ist ein Speicherverfahren, bei dem Daten gleichzeitig in den Cache und den entsprechenden Hauptspeicherplatz (Main Memory) geschrieben werden. Die zwischengespeicherten Daten ermöglichen einen schnellen Abruf bei Bedarf, während die gleichen Daten im Hauptspeicher sicherstellen, dass bei einem Problem, Stromausfall oder einer anderen Systemstörung nichts verloren geht.

Obwohl das Write-Through-Verfahren das Risiko eines Datenverlustes minimiert, muss jeder Schreibvorgang zweimal durchgeführt werden, und diese Redundanz braucht Zeit. Das aktive Anwendungsprogramm muss warten, bis jeder Datenblock sowohl in den Hauptspeicher als auch in den Cache geschrieben wurde, bevor es die nächste Operation startet. Die „Datenversicherung“ geht also auf Kosten der Systemgeschwindigkeit.
 

Robert Zenz

Top Contributor
Write Through ist ein Speicherverfahren, bei dem Daten gleichzeitig in den Cache und den entsprechenden Hauptspeicherplatz (Main Memory) geschrieben werden. Die zwischengespeicherten Daten ermöglichen einen schnellen Abruf bei Bedarf, während die gleichen Daten im Hauptspeicher sicherstellen, dass bei einem Problem, Stromausfall oder einer anderen Systemstörung nichts verloren geht.

Obwohl das Write-Through-Verfahren das Risiko eines Datenverlustes minimiert, muss jeder Schreibvorgang zweimal durchgeführt werden, und diese Redundanz braucht Zeit. Das aktive Anwendungsprogramm muss warten, bis jeder Datenblock sowohl in den Hauptspeicher als auch in den Cache geschrieben wurde, bevor es die nächste Operation startet. Die „Datenversicherung“ geht also auf Kosten der Systemgeschwindigkeit.

Wat? "Write Through" war in Anfuehrungszeichen, es ist gemeint das Aenderungen direkt in das zugrunde liegende Array geschrieben werden, nicht mehr. Du kannst dir auch jeder Zeit die Implementierung von Arrays.asList und der retournierten (leider schlecht benannten) Arrays.ArrayList ansehen.

Wenn ich dich richtig verstanden habe, dann wird der Fehler deshalb geworfen,
weil das Arrays.asList() endgültig ist (final) -> nicht mehr erweiterbar.

Nein, der Fehler wird deswegen geworfen weil dieser in der Methode Arrays.ArrayList.add geworfen wird, weil das veraendern der Liste nicht implementiert ist in dieser Implementierung. Das hat nichts damit zu tun ob die Klasse oder die Methode final ist oder nicht.
 

Neumi5694

Top Contributor
ok nur klammern geht . aber verändern nicht
Hinzufügen und Entfernen klappen nicht bei einer durch asList erstellten Liste, da sie wie sublist() nur eine Abbildung der Quelle darstellt.
Einzelne Werte verändern oder z.B. sortieren klappen hingegen, damit wird dann das Original verändert.

Java:
Compareable[] arr = ...; //mal annehmen, dass es eine Länge > 4 hat.
Collections.sort(Arrays.asList(arr).subList(1,4)); //dieser Befehl sortiert den genannten Bereich im Array.

asList() ohne Parameter bildet ein leeres Array ab. Technisch gesehen absolut ok, aber halt völlig unbrauchbar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
J Double Variable und Addition Java Basics - Anfänger-Themen 2
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
G Java Bruchrechner Addition, Multiplikation... Java Basics - Anfänger-Themen 12
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
L Addition von 1 bis n, in Arrays umstellen Java Basics - Anfänger-Themen 15
E Addition Array Java Basics - Anfänger-Themen 6
M Array Addition Binärzahlen Java Basics - Anfänger-Themen 9
A Binäre Addition Java Basics - Anfänger-Themen 15
M Addition mit hohen Zahlen - Hilfe Java Basics - Anfänger-Themen 5
N Rekursive Addition mit Scanner Java Basics - Anfänger-Themen 12
X Compiler-Fehler Possible loss of precision bei addition von int und char Java Basics - Anfänger-Themen 5
C Logischer Fehler mit Addition von Arrays Java Basics - Anfänger-Themen 3
I Schriftliche Addition Arrays Java Basics - Anfänger-Themen 2
T Operatoren Multiplikation nur mit Addition, Subtraktion und Vergleich Java Basics - Anfänger-Themen 29
B Erste Schritte Addition von double in switch-Anweisung Java Basics - Anfänger-Themen 2
X Addition von Strings Java Basics - Anfänger-Themen 12
X Arrays/Addition Java Basics - Anfänger-Themen 18
R addition von 2 Array Objekten Java Basics - Anfänger-Themen 5
S Multiplikation durch Addition, Subtraktion und Vergleich von Zahlen Java Basics - Anfänger-Themen 14
K Datentypen Kurzform Addition geht, Langform scheitert am Typen Java Basics - Anfänger-Themen 6
A Binäre Addition Java Basics - Anfänger-Themen 5
K char-int-Addition in System.out.print Java Basics - Anfänger-Themen 3
T Matrizzen addition mit zufallszahlen Java Basics - Anfänger-Themen 10
P Addition von 2 Variablen Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
E Addition von char und int als Zeichen ausgeben Java Basics - Anfänger-Themen 11
J Addition zweier Zahlen Java Basics - Anfänger-Themen 9
C Falsches Ergebnis float-Addition Java Basics - Anfänger-Themen 10
X Addition rekursiv ohne Schleife Java Basics - Anfänger-Themen 10
S Problem bei Matrix Addition Java Basics - Anfänger-Themen 5
E Addition von Arrays Java Basics - Anfänger-Themen 4
H Mysteriöse Ausgaben nach Addition Java Basics - Anfänger-Themen 5
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
M Ausgabe einer gerade Zahl nur mit Addition,subtraktion und vergleichsoperatoren! Java Basics - Anfänger-Themen 4
J klasse vektor addition Java Basics - Anfänger-Themen 10
S Anzahl der Überträge bei einer Addition ausgeben Java Basics - Anfänger-Themen 8
S Addition von eigenen Objekten mit "+" Symbol Java Basics - Anfänger-Themen 19
2 Variablenüberlauf bei Addition, Multiplikation Java Basics - Anfänger-Themen 2
A ungenaue addition Java Basics - Anfänger-Themen 2
A Addition mehrdimmensionaler Arrays - Klausurfrage :-( Java Basics - Anfänger-Themen 3
G Addition von 2 Matrizen Java Basics - Anfänger-Themen 31
J Addition von double values fehlerhaft? Java Basics - Anfänger-Themen 5
H Subtraktion mittels Negierung auf Addition zurückführen Java Basics - Anfänger-Themen 4
W Addition von Arrays bzw. Vektoren Java Basics - Anfänger-Themen 2
V Addition in einem Zweidimensionalenfeld Java Basics - Anfänger-Themen 8
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste und Arrays Java Basics - Anfänger-Themen 12
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
M Arrays Java Basics - Anfänger-Themen 3
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
E Zinsrechnung mithilfe von Arrays Java Basics - Anfänger-Themen 12
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
H Arrays befüllen Java Basics - Anfänger-Themen 43
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
D Arrays Java Basics - Anfänger-Themen 9
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
N Arrays Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
U zwei 2D arrays auf gleich sein überprüfen Java Basics - Anfänger-Themen 14
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
A Arrays aufsummieren Java Basics - Anfänger-Themen 11
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
S Arrays aneinanderketten Java Basics - Anfänger-Themen 20
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
D Verschlüsslungsaufgabe / Arrays Java Basics - Anfänger-Themen 6
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
J Methoden Mehrdimensionale Arrays übereinander legen Java Basics - Anfänger-Themen 5
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben