Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нету регулярного метода склейки массивов? 
V
    Опции темы
Andrey1
Дата 14.7.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Нашел только это:
http://stackoverflow.com/questions/80476/h...-arrays-in-java

(пришлось переписывать под свою задачу второй сверху ответ).


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
Дрон
Дата 14.7.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 93



В Java вообще очень мало методов "для удобства".
Надо либо изобретать велосипед, либо некоторые рекомендуют смотреть в сторону Apache Commons. Но лично я им не пользовался.

http://commons.apache.org/lang/api-2.3/org...ArrayUtils.html

Добавлено через 2 минуты и 18 секунд
Ой, протупил. Первый ответ по ссылке на stackoverflow и предлагает пользоваться этими самыми Apache Commons smile


--------------------
Да. Именно так.
PM   Вверх
niasilil
Дата 16.7.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



думаю - всего же две строчки кода, дай ка напишу. 
Код

    public static String[] combine (String[] a, String[] b){
        ArrayList<String> both = new ArrayList<String>();
        both.addAll(Arrays.asList(a));
        both.addAll(Arrays.asList(b));
        return both.toArray(new String[a.length + b.length]);
    }

все просто, а почему бы не сделать generics
Код

    public static<T> T[] combine (T[] a, T[] b){
        ArrayList<T> both = new ArrayList<T>();
        both.addAll(Arrays.asList(a));
        both.addAll(Arrays.asList(b));
        return both.toArray(new T[a.length + b.length]);
    }

а нифига не компилируется. Оказывается Cannot create a generic array of T
Неудивительно что этого метода до сих пор нет в классе Arrays

удивительно.


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
math64
Дата 16.7.2009, 15:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Код

public class Main {

  public static <T> T[] combine(T[] a, T[] b) {
    int length = a.length + b.length;
    Object res = java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), length);
    System.arraycopy(a, 0, res, 0, a.length);
    System.arraycopy(b, 0, res, a.length, b.length);
    return (T[])res;
  }
  
  public static void main(String[] args) {
    String[] a = { "1", "2", "3" };
    String[] b = { "4", "5", "6" };
    String[] c = combine(a, b);
    for (int i = 0; i < c.length; i++) {
      System.out.println(c[i]);
    }
  }

}


PM   Вверх
niasilil
Дата 19.7.2009, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



hmm, reflection. Неплохо.  smile 
Код

public static<T> T[] combine (T[] a, T[] b){
    ArrayList<Object> both = new ArrayList<Object>();
    both.addAll(Arrays.asList(a));
    both.addAll(Arrays.asList(b));
    Object res = Array.newInstance(a.getClass().getComponentType(), a.length + b.length);
    return both.toArray((T[])res);
}

math64, твой метод лучше

Это сообщение отредактировал(а) niasilil - 19.7.2009, 06:53


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.