#java #массивы #строки
Добрый день! Мне нужно объединить два массива строкового типа, каким простым способом я могу сделать это? String[] bothArray(String[] first, String[] second) { return ??; }
Ответы
Ответ 1
Если разрешено использовать Java8, то можно воспользоваться классом Stream и лямбдами: import java.util.Arrays; import java.util.stream.Stream; // . . . String[] bothArray(final String[] first, final String[] second) { return Stream.concat(Stream.of(first), Stream.of(second)).toArray(String[]::new); } Компактно, красиво и не требует внешних компонентов.Ответ 2
С помощью библиотеки Apache Commons: String[] both = (String[])ArrayUtils.addAll(first, second); отсюда Другой вариант public static String[] combine(String[] a, String[] b){ int length = a.length + b.length; String[] result = new String[length]; System.arraycopy(a, 0, result, 0, a.length); System.arraycopy(b, 0, result, a.length, b.length); return result; } источник с примерами Еще один вариант для всех типов. Тут можно не только примитивные типы использовать, а так же объектов publicT[] concatenate (T[] a, T[] b) { int aLen = a.length; int bLen = b.length; @SuppressWarnings("unchecked") T[] c = (T[]) Array.newInstance(a.getClass().getComponentType(), aLen+bLen); System.arraycopy(a, 0, c, 0, aLen); System.arraycopy(b, 0, c, aLen, bLen); return c; } источник Ответ 3
И еще один вариант. (Редко вижу его упоминание) String[] array; StringBuilder newStr = new StringBuilder(); for(String data: array){ newStr.append(data); } return newStr.toString();
Комментариев нет:
Отправить комментарий