Я был удивлен, что не было никакого стандартного метода API, чтобы сделать это. Ну что ж, вот мое домашнее решение:
public static void main(String[] args) {
final List<String> fruits = Arrays.asList(new String[] { "Apple", "Orange", "Pear", "Banana" });
System.out.println(fruits); // Prints [Apple, Orange, Pear, Banana]
System.out.println(merge(fruits, 1)); // Prints [Apple, OrangePear, Banana]
System.out.println(merge(fruits, 3)); // Throws java.lang.IndexOutOfBoundsException: Cannot merge last element
}
public static List<String> merge(final List<String> list, final int index) {
if (list.isEmpty()) {
throw new IndexOutOfBoundsException("Cannot merge empty list");
} else if (index + 1 >= list.size()) {
throw new IndexOutOfBoundsException("Cannot merge last element");
} else {
final List<String> result = new ArrayList<String>(list);
result.set(index, list.get(index) + list.get(index + 1));
result.remove(index + 1);
return result;
}
}