element in ArrayList Hinzufügen

guguli

Bekanntes Mitglied
Hi zusammen,

Ich möchte gerne eine Methode Schreiben, womit ich ein übergebenes Element in einem bestehenden Array hinzufügen kann.
meine idee ist zuerst ein ArrayObjekt erzeuge , dann und dann zuerst alle Alemente des ersten Arrays da rin tun dann das letzte element.
Java:
public ArrayList hinzufügen(int newElement) {
          ArrayList[] newArray = new ArrayList[data.length + 1];
    	 for(int i = 0; i < data.length;i++){
    		
    	 }
}

Wie kann ich nun den letzte schritt, also die elemenete in newArray einfügen???


THX
 

guguli

Bekanntes Mitglied
aber das alte Array soll ja unverändert beiben und das neue element einfach dran gehangn werden:
[2,3,1] hinzufügen(5) --> [2,3,1,5]
 

MrClave

Bekanntes Mitglied
Wieso erstellst du ein Array von Typ ArrayList ?
Demnach hättest dann ja dutzende ArrayListen. Wozu ?

Schreib' noch mal schön langsam, was genau du vor hast.
Willst du nun etwas in ein Array ODER eine(/viele) ArrayList(en) schreiben ?
 

kaoZ

Top Contributor
das alte Array bleibt ja unverändert , Daten die du neu hinzufügst werden lediglich hinten an die liste angehängt, ausser du weist ihr einen festen Index zu.

Wenn du z.B "Hallo", "Welt" bereits hinzugefügt hast,

belegt "Hallo" index[0]

und "Welt" index[1]

wenn du jetzt mit
Code:
deineArrayList.add("irgendwas")
hinzufügst landet es in der List auf index[2]

das ist ja der Sinn von ArrayList im Vergleich zu einem Normalen Array, ebend das diese sich automatisch erweitert und keine festgelegte länge hat .

Desweiteren sollte man bei einer ArrayList den zu speichernden Datentyp angeben z.B

Code:
ArrayList<String> MeineArrayList = new ArrayList<String>();
 
Zuletzt bearbeitet:

guguli

Bekanntes Mitglied
Also, meine Klasse Heißt "ArrayList", ja ich hab mich vertan. und die Elemnte meiner List sind int. hab das korrigiert:
Java:
public ArrayList append(int newElement) {
    	
    	if(newElement <0){
    		return null;
    	}
    	 int [] newArray = new int[data.length + 1];
    	 for(int i = 0; i < data.length;i++){
    		 newArray[i] = data[i]
    	 }
    }
so copiere ich die Elemente von data in newArray. wie kann ich nun das newElement am ander anhängen. mit newArray.add(newElement); geht es nicht.
 

geqoo

Bekanntes Mitglied
Deine ArrayList-Deklaration ist falsch. Du erzeugst ein Array aus ArrayListen. Eine ArrayList hat aber eine dynamische Länge und braucht deshalb keine vorgegebene Größe.
Wie heißt denn dein bestehendes Array?

Beispiel:

Java:
class ArrayTest {
  private ArrayList<int> list;

  public ArrayTest() {
    this.list = new ArrayList<int>();
  }

  public void addElement(int newElement) {
    this.list.add(newElement);
  }
}

Fertig. Nicht so ein kaputtes Konstrukt verwenden, wie du es gerade tust.
Alternativ, so wie du es haben willst:

Java:
public ArrayList<int> append(ArrayList<int> list, int newElement) {
  if(newElement <0){
    return null;
  }

  list.add(newElement)

  return list;
}
 
Zuletzt bearbeitet:

guguli

Bekanntes Mitglied
Ja aber das ist bei mir so vorgegeben. ihc muss das so benutzen :(.
Java:
public ArrayList append(int newElement) {
    	
    	if(newElement <0){
    		return null;
    	}
    	 int[] newArray = new int[data.length + 1];
    	 for(int i = 0; i < data.length;i++){
    		 newArray[i] = data[i];
    	 }
    	 newArray[data.length + 1]=newElement;
		return null;
    	 
    }
wobei return null; macht mir sorge. Ich versuche gerad eine main method zu schreiben, um das auch zu testen.

Muss noch sagen dass data die Elemente der liste enthält und ist private. meine Main ist dann so :
Java:
 public static void main(String[] args) {
		int[] data = { 2, 3, 5, 7};
		int newElement = 8;
		append(newElement);

	}

Aber kriege die Fehler meldung dass append static sein soll. ist Main richtig so`????
 
Zuletzt bearbeitet:

guguli

Bekanntes Mitglied
Also mein Rückgabewert ist ja vom typ ArrayList. und meine daten vom typ int[]. wie kann ich jetzt newArray zurückgeben.
Java:
public class ArrayList {   
    private int[] data;
    public ArrayList() {
	this.data = new int[0];
    }
public ArrayList append(int newElement) {
  
    	if(newElement <0){
    		return null;
    	}
    	  int[] newArray = new int[data.length + 1];
    	 for(int i = 0; i < data.length;i++){
    		 newArray[i] = data[i];
    	 }
    	 newArray[data.length + 1]=newElement;
		return  ...;
    	 
    }
public void main(String[] args) {
		int[] data = { 2, 3, 5, 7};
	
		append(8);

	}
das ist das was ich implementiert habe. ich will ja wenn ich append aufrufe das bekomme [2,3,5,7,8]
dazu muss ich ja newArray rütuck geben, aber wenich return newArray schreibe dann wiill er das nicht weil meine rückgabe wert vom Typ ArrayList ist. wie kann ich das problem beheben??

THX
 

geqoo

Bekanntes Mitglied
Deine geforderter Rückgabewert stimmt eben nicht mit dem zurückgegebenen Wert überein.
Statt public ArrayList append einfach public int[] append schreiben.

PS: Deine Klasse solltest du nicht ArrayList nennen, da dieser Name schon für eine von Java definierte Klasse vergeben ist.
 
Zuletzt bearbeitet:

guguli

Bekanntes Mitglied
Also, das ist irgendwie nicht so ganz richtig. ich darf den Rückgabe wert nicht ändern.
Java:
public class ArrayList {

    private int[] data;

    public ArrayList() {
	this.data = new int[0];
    }
 public ArrayList append(int newElement) {
  
    	if(newElement <0){
    		return null;
    	}
    	  ArrayList newArray = new ArrayList();
    	 
    	 }
    	
		
    	 
    }
Ich verstehe jetzt nicht mehr wie ich append implementieren kann. kann mir da einer Weiterhelfen.
 

calousy

Mitglied
das klappt so nicht.

1) ArrayList ist eine Klasse, die bereits in java.util implementiert ist (ArrayList (Java Platform SE 6)). Hier gibt's also Namenskonflikte, daher auch die Verwirrung bei den anderen hier. Kannst du die nicht umbenennen, bzw. ist in der Aufgabenstellung verlangt, dass du diese Klasse selbst implementieren musst?

2) in deinem Konstruktor initialisierst du dein Array mit einer Länge von 0. Hier kannst du also nichts mehr hineinpacken. Du wirst zwangsläufig beim Einfügen einen IndexOutOfBoundsException bekommen.

3) wenn du append aufrufst, woher weißt du dann, an welcher Position im Array du das neue Element einfügen sollst? Lösung wäre hier (vorausgesetzt es bleibt bei einem Array und nicht einer java.util.ArrayList) eine Klassenvariable, in dem du den aktuellen Index speicherst. Bei jedem Aufruf von append wird an der Index-Stelle eingefügt und anschließend der Index hochgezählt.
 
Zuletzt bearbeitet:

guguli

Bekanntes Mitglied
Hi,
zu 2): der Konstruktur erzeugt eine Leere List.
zu 3): wie gesagt ich muss das neue Element am ende einfügen. das soll heissen, ich koppiere die bestehende Liste und dann füge das new Element am ende der list
Bsp:vorhandene Liste: [2,3,1], newElement 4: append(4) --> [2,3,1,4]
 

geqoo

Bekanntes Mitglied
Soso... Im Prinzip hast du den Werkzeugkasten ja schon vor dir liegen, du musst nur noch damit arbeiten.

Java:
public class ArrayList {

  private int[] data;

  public ArrayList() {
    this.data = new int[0];
  }

  public void append(int newElement) {
    if(newElement < 0){
      return;
    }

    int[] old_array = this.data;
    this.data = new int[old_array.length + 1];

    for(int i = 0; i < old_array.length;i++){
      this.data[i] = old_array[i];
    }

    this.data[old_array.length] = newElement;
  }

}

Hinweis: Dass man die Klasse nicht ArrayList nennen sollte, ist mir klar. Ich habe das nur gemacht, weil es hier so gefordert ist.
 
Zuletzt bearbeitet:

Ikaron

Bekanntes Mitglied
Ja aber das ist bei mir so vorgegeben. ihc muss das so benutzen :(.
Java:
public ArrayList append(int newElement) {
    	
    	if(newElement <0){
    		return null;
    	}
    	 int[] newArray = new int[data.length + 1];
    	 for(int i = 0; i < data.length;i++){
    		 newArray[i] = data[i];
    	 }
    	 newArray[data.length + 1]=newElement;
		return null;
    	 
    }
wobei return null; macht mir sorge. Ich versuche gerad eine main method zu schreiben, um das auch zu testen.

Muss noch sagen dass data die Elemente der liste enthält und ist private. meine Main ist dann so :
Java:
 public static void main(String[] args) {
		int[] data = { 2, 3, 5, 7};
		int newElement = 8;
		append(newElement);

	}

Aber kriege die Fehler meldung dass append static sein soll. ist Main richtig so`????

Nur, um mal ein bisschen deine Verwirrung aufzuklären, da ja hier doch viel durcheinander geworfen wird: Dein Code stimmt soweit FAST, nur kannst du nicht newArray[data.length + 1] = newElement; aufrufen. Wenn das Array die Länge L hat, ist der letzte Index K - 1, also in diesem Fall: newArray[newArray.length - 1] = newElement;
Nun musst du allerdings noch irgendwas mit newArray machen. Um zu wissen, was, brauchen wir die Aufgabenstellung. Denkbar wäre allerdings so etwas: data = newArray;

So weit so gut. Nun zu dem "return null;". Auch hier brauchen wir die Aufgabenstellung. Denkbar wäre hier:
[c]return this;[/c]
[c]return new ArrayList(newArray);[/c]
Je nachdem, was die Methode genau machen soll. => Aufgabenstellung.

Dass "append" static sein soll liegt daran, dass du nicht einfach "append" aufrufen kannst, ohne zu sagen, was denn genau "append" ausführen soll. Wenn man mehrere ArrayList'en hat, weiß das Programm ja dann nicht mehr, welche du meinst, oder allgemein, dass du überhaupt ArrayList'en meinst. Das musst du dem Programm sagen, und zwar über die Punktnotation. Aber dafür brauchen wir erst mal eine Liste, die kriegen wir so:
Java:
public static void main(String[] args) {

	int[] data = { 2, 3, 5, 7};
	int newElement = 8;

	/*Hier*/ ArrayList list = new ArrayList(data); /*Hier*/
	/*Hier*/ list /*Hier*/.append(newElement);
}
So. Ich habe allerdings hier den Verdacht, dass du einen Fehler begehst, was die Umsetzung der Aufgabenstellung angeht. Wenn du nur an "data" anhängen willst, wäre so eine Methode sinnvoller:
Java:
public int[] append(int[] data, int newElement) {
    	
	int[] newArray = new int[data.length + 1];
	System.arraycopy(data, 0, newArray, 0, data.length);
	newArray[newArray.length - 1] = newElement;
	return newArray;    	 
}

Sollten jetzt noch Fragen bestehen, sag einfach bescheid.

PS: Die Verwirrung in dem Thema hier liegt daran, dass java schon eine Klasse "ArrayList" besitzt, diese allerdings auch noch generisch ist, (was das genau ist muss dich denke ich noch nicht interessieren), weshalb jeder hier mit spitzen Klammern <> (teilweise auch noch falsch) rumfuchtelt. Methoden wie "add", "set" und "get" beziehen sich hier meißtens auf eben diese Klasse, java.util.ArrayList und haben somit gar nichts mit deinem Problem zu tun.

PPS: Ich hab ja total die letzten 10 Antworten überlesen... Das meiste wurde schon gesagt... Ich lass es aber trotzdem mal stehen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M ArrayList-Element hinzufügen u. löschen Java Basics - Anfänger-Themen 2
M ArrayList - Element hinzufügen Java Basics - Anfänger-Themen 8
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
S Günstigstes Element aus einer ArrayList ausgeben Java Basics - Anfänger-Themen 10
N ArrayList: Das zweite Element wird zur Liste nicht eingefügt nach dem zweiten request. Java Basics - Anfänger-Themen 3
R Element an ArrayList<int[]> "anonym" adden? Java Basics - Anfänger-Themen 3
Glühwürmchen Prüfen ob Element in ArrayList Java Basics - Anfänger-Themen 23
S ArrayList nur ergänzen wenn Element noch nicht vorhanden Java Basics - Anfänger-Themen 4
S Datentypen In ArrayList nach Element suchen und Position ausgeben Java Basics - Anfänger-Themen 9
C Erstes Arraylist Element in for Schleife überspringen Java Basics - Anfänger-Themen 6
S ArrayList<Element> - "unchecked or unsafe operati Java Basics - Anfänger-Themen 13
G Bestimmtes Element in ArrayList finden Java Basics - Anfänger-Themen 3
M ArrayList remove Element? Java Basics - Anfänger-Themen 3
C element aus ArrayList ansprechen Java Basics - Anfänger-Themen 5
M ArrayList auf bestimmtes Element zugreifen Java Basics - Anfänger-Themen 2
R Element an Position in ArrayList checken Java Basics - Anfänger-Themen 4
C Aus ArrayList ein Element löschen Java Basics - Anfänger-Themen 2
C Element aus ArrayList entfernen Java Basics - Anfänger-Themen 5
K Wie kann ich ein Element an den Anfang setzten ? Java Basics - Anfänger-Themen 1
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
S Gibt es ein simples JWebbrowser Element? Java Basics - Anfänger-Themen 6
S Streams - kleinstes Element finden Java Basics - Anfänger-Themen 4
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
A Konsolenausgabe: Hinter letztes Element ein "}" Java Basics - Anfänger-Themen 2
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
O Element aus Array löschen Java Basics - Anfänger-Themen 5
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
D Selenium Webdrive get x Element Java Basics - Anfänger-Themen 14
W Element aus HashSet in String umformen Java Basics - Anfänger-Themen 7
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Element in Array nach unten verschieben Java Basics - Anfänger-Themen 11
TechGirl JAVA GUI Oberfläche Umkreisung - wie heißt dieses Element? Java Basics - Anfänger-Themen 2
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
Z Html Element aus der Webseite auslesen Java Basics - Anfänger-Themen 1
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
A ResultSet: vorheriges Element auslesen Java Basics - Anfänger-Themen 10
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
V wie kann man am einfachsten für ein Element der JavaFX die Umrandung aktiwieren ? auch ohne css ? Java Basics - Anfänger-Themen 4
D Fehlermeldung "com.element.JavaUpload.Manager" Java Basics - Anfänger-Themen 1
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
I Element löschen aus der Liste Java Basics - Anfänger-Themen 2
H Möglichkeit, mehrere Element zu speichern Java Basics - Anfänger-Themen 8
P Element aus einer einelementigen Menge bekommen. Java Basics - Anfänger-Themen 8
M Letztes Element im Array finden Java Basics - Anfänger-Themen 3
R Mit iterator auf Element zugreifen Java Basics - Anfänger-Themen 2
G Element einem Array hinzufügen Java Basics - Anfänger-Themen 7
Madlip Erste Schritte Das 4. Element?!? Java Basics - Anfänger-Themen 2
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
Q queue.remove Element trotzdem noch vorhanden. Java Basics - Anfänger-Themen 10
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
N Array, Element in Array? Java Basics - Anfänger-Themen 8
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
M Map mit Vektor: Element hinzufügen Java Basics - Anfänger-Themen 21
M element aus DB lesen Java Basics - Anfänger-Themen 4
C Variablen array element hinzufügen/entfernen Java Basics - Anfänger-Themen 10
K Letzter element aus einem Array Java Basics - Anfänger-Themen 5
S JDBC MySQL Connector - Element mit ' eintragen? Java Basics - Anfänger-Themen 4
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
L Element in Mitten eines Arrays einfügen Java Basics - Anfänger-Themen 3
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
S Auf Element in Arry zugreifen Java Basics - Anfänger-Themen 7
M String-Array-Element wieder null zuweisen Java Basics - Anfänger-Themen 16
B Element aus Array entfernen Java Basics - Anfänger-Themen 13
B Element in Folge suchen Java Basics - Anfänger-Themen 7
H Zeiger auf das letzte Element in einer linearen Liste Java Basics - Anfänger-Themen 4
A Array ein element hinzufügen. Java Basics - Anfänger-Themen 6
S element in Array kopieren Java Basics - Anfänger-Themen 12
S Auf Element aus Array zugreifen Java Basics - Anfänger-Themen 6
H LinkedList Element an Stelle x ausgeben? Java Basics - Anfänger-Themen 5
M Wert soll element aus den natürlichen Zahen inkl. 0 sein Java Basics - Anfänger-Themen 6
T Letztes beschriebenes Array-Element ausgeben Java Basics - Anfänger-Themen 6
E TreeSet Element löschen Java Basics - Anfänger-Themen 9
J Stapel oberstes Element entfernen Java Basics - Anfänger-Themen 5
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
P Klasse nach Element casten Java Basics - Anfänger-Themen 4
G Mit Java Quelltext auf Element untersuchen. Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben