# Nächstes leeres Feld im array füllen?



## Rufus.Mueller (17. Jun 2011)

Gibt es eine einfache Möglichkeit ein Element an die nächste freie Stelle eines arrays zu setzen? (einfacher als eine for-Schleife nach dem nächsten Null suchen zu lassen).

Ich weiß, dass eine ArrayList geeignet wäre, leider habe ich bereits ein Array im Einsatz und merke jetzt erst, dass eine ArrayList besser wäre (müsste das ganze Programm ummoddeln).


----------



## Marcinek (17. Jun 2011)

Merke di die nächste freie stelle.


----------



## Gast2 (17. Jun 2011)

```
int pos = Arrays.asList(deinArray).lastIndexOf(null);
```


----------



## nrg (17. Jun 2011)

Eike's Einzeiler macht aber im Endeffekt auch nicht weniger als eine eigene Iteration (wenn nicht sogar mehr). ich würde dir empfehlen, auch wenns blöd ist, das Programm "umzumoddeln" . ansonsten nimm lieber Marcineks Vorschlag.


----------



## Rufus.Mueller (17. Jun 2011)

Danke für alle Vorschläge. Werd in dem Fall Eikes Vorschlag bevorzugen. Mir gehts weniger um die Laufzeit, mehr um die Übersichtlichkeit des Codes und das ich nicht so viele Möglichkeiten habe Fehler einzubauen! 

Ummodeeln werd ich's wenn zum Schluss noch Zeit übrig ist, im Moment hat Eleganz nur die zweite Priorität (Zeitgründe).


----------



## thorstenthor (18. Jun 2011)

EikeB hat gesagt.:


> ```
> int pos = Arrays.asList(deinArray).[B][SIZE="7"][COLOR="Orange"]last[/COLOR][/SIZE][/B]IndexOf(null);
> ```



warum jetzt nicht first?


----------



## Gast2 (18. Jun 2011)

firstIndexOf gibts nicht.
Je nachdem wo vorne oder hinten ist in deinem array nimmste lastIndexOf oder indexOf


----------



## thorstenthor (18. Jun 2011)

Marcinek hat gesagt.:


> Merke di die nächste freie stelle.



Und was ist die nächste freie Position, wenn ein Index belegt wird?


----------



## thorstenthor (18. Jun 2011)

EikeB hat gesagt.:


> firstIndexOf gibts nicht.
> Je nachdem wo vorne oder hinten ist in deinem array nimmste lastIndexOf oder indexOf



umgekehrt denken geht bei mir nicht


----------



## slawaweis (18. Jun 2011)

Rufus.Mueller hat gesagt.:


> Danke für alle Vorschläge. Werd in dem Fall Eikes Vorschlag bevorzugen. Mir gehts weniger um die Laufzeit, mehr um die Übersichtlichkeit des Codes und das ich nicht so viele Möglichkeiten habe Fehler einzubauen!


dann erstelle doch eine Hilfsfunktion:


```
public void insertIntoNextFreeSlot(Object [] array, int start, Object value)
```

wo dann mit einer Schleife die nächste freie Stelle gesucht wird oder eine Exception geworfen, falls keine freien Stellen mehr vorhanden sind.

Slawa


----------



## Rufus.Mueller (18. Jun 2011)

Ich habe im Folgenden Eikes Lösung implementiert, bekomme aber eine IOOBE wenn ich an die Stelle mit variable[pos]=99; was ablegen möchte.


```
import java.util.Arrays;

public class Test {
	
	static int[] variable;
	static int pos;
	
	public static void main(String[] args){
		variable = new int[10];
		int pos =Arrays.asList(variable).lastIndexOf(null);	
		variable[pos]=99;
		
		System.out.println(variable[0]);	
	}
}
```


----------



## Rufus.Mueller (18. Jun 2011)

Warum auch immer: Mit variable[pos+1]=99; geht es...


----------



## Rufus.Mueller (18. Jun 2011)

Diese Methode ist seltsam. Egal ob das array leer ist oder was und wieviel drin steht, sie gibt immer -1 zurück.


```
static int[] variable;
	static int pos;
	
	public static void main(String[] args){
		variable = new int[10];
		
	
	int pos=Arrays.asList(variable).lastIndexOf(null);
	variable[pos+1]=99;
	int pos1=Arrays.asList(variable).lastIndexOf(null);
	variable[pos+1]=99;
	int pos2=Arrays.asList(variable).lastIndexOf(null);

		System.out.println(pos);	
		System.out.println(pos1);
		System.out.println(pos2);
	}
}
```


----------



## Rufus.Mueller (18. Jun 2011)

Hab' jetzt doch die Suchmethode implementiert...hat gar nicht wehgetan!


----------



## Gast2 (18. Jun 2011)

```
variable = new int[10];
```
Du hast ein int Array, und da steht nunmal kein null drin


----------

