Java arbeitet nur mit "CallByValue" sprich es wird der Wert der Referenz übergeben und dieser Wert zeigt auf das Objekt.
Wie kommst du zu deiner Vermutung? Welches Verhalten veranlasst dich dazu?
Einfach Überprüfung ob es richtig funktioniert: Lass dir doch einfach mal die Listengröße vor und nach der Schleife ausgeben, du wirst sehen das "remove()" ohne Probleme funktioniert.
Irgendwie glaube ich hast du dich mit deinen Listen etwas vertan (kann mich aber auch irren):
[code=Java]channelValueList.clear();
updateOutputBuffer(channelValueList.size());[/code]
Welchen Sinn sollen diese beiden Zeilen haben? Zuerst leerst du die Liste, danach verwendest du die größe als Parameter. Die Größe hier wird immer 0 sein.
[code=Java]uploadChannelValueList.add(channelValueList);
for (Iterator<ArrayList<ChannelValue>> iterator = this.uploadChannelValueList.iterator(); iterator.hasNext();) {
ArrayList<ChannelValue> value = iterator.next();
......
iterator.remove();
}
.....
updateOutputUploadbuffer(uploadChannelValueList.size());
[/code]
Auch diese Logik finde ich komisch. Sofern deine upload Liste leer ist sendest du nichts ok.
Sollte etwas vorhanden sein, fügst du eine weitere Liste hinzu und iterierst über die uploadListe.
Jeder Eintrag aus der upload-Liste wird entfernt und am Ende der Methode willst du wieder auf die Größe der upload-Liste zugreifen -> die wird immer 0 sein an dieser Stelle.