Мне нужно добавлять элемент перед каждым появлением определенного элемента. Я могу сделать это, используя для l oop и вычислить индекс, а затем добавить элемент. Есть ли какой-либо эффективный метод без использования для l oop или использования потоков.
например: int[] a = {1,2,4,5,7,9,2,5}
Добавить элемент {3} перед каждым появлением 2, что приводит к { 1,3,2,4,5,7,9,3,2,5}
Попытка:
int[] a = {1, 2, 4, 5, 7, 9, 2, 5};
int[] new1 = null;
int[] indexToAdd = IntStream.range(0, a.length)
.filter(i -> a[i] == 2)
.map(i -> i)
.toArray();
for(int j = 0; j<indexToAdd.length; j++){
final Integer innerj = new Integer(j);
new1 = IntStream.range(0,a.length)
.map(i -> {
if (i < indexToAdd[innerj]) {
return a[i];
} else if (i == indexToAdd[innerj]) {
return 3 ;
} else {
return a[i - 1];
}
}).toArray();
}