2013-12-17 4 views
1

Ужасно новичок вопрос Я знаю, но я очень новичок в программировании на Java.Java Array List Creation

У меня есть 4 значения, значение1, значение2, значение3 и значение4. Мне нужен метод, который вернет все 4 значения, но я думаю, что для этого мне нужен ArrayList. Все эти значения находятся в одном классе, и этот метод также будет находиться в этом классе.

Я никогда не создавал его раньше, и Google действительно не предлагает ответа, который я могу понять на самом раннем уровне понимания Java. Любая помощь в том, как я создаю для этого?

(я предполагаю, что мне нужно ArrayList, но я могу ошибаться)

+0

Вы правильно – Sach

+0

@Sach Нет, он не так. – Doorknob

+0

@DoorknobofSnow: Если вы видите ответ ниже. Все упоминание того же самого, что он думает – Sach

ответ

2

Вы можете просто использовать обычный массив. Например:

int[] getValues() { 
    int value1 = 10, value2 = 20, value3 = -5, value4 = 3; 
    int[] arr = new int[] {value1, value2, value3, value4}; 
    return arr; 
} 

Нет необходимости использовать ArrayList, когда вы знаете, сколько элементов вы всегда будете нуждаться.

Было бы лучше иметь массив, поскольку они являются родными и, следовательно, быстрее, менее раздутыми и намного более простыми.

+0

Ну, я не собираюсь голосовать, потому что вы правы в том, что у вас нет * * использовать экземпляр List. И хотя, технически, массивы обеспечивают меньшую площадь и доступ к элементам быстрее, они не обеспечивают безопасности типа и не приводят к хрупкому коду. Новичкам следует беспокоиться о хороших методах кодирования перед представлением. – MadConan

+0

@MadConan Существует абсолютно никакой причины использовать 'ArrayList', когда массив подходит лучше. «они не обеспечивают безопасность типа», это совершенно неверно ... и я не уверен, как они приводят к «хрупкому коду» ... – Doorknob

+0

Для примитивных массивов нет проблем с вводом текста. Тем не менее, ОП задает общий вопрос, а с массивами объектов и дженериками тип безопасности не может быть предоставлен с использованием массивов. Если нет четкого преимущества в использовании массивов (только в результате тестирования), списки предпочтительны. – MadConan

1
public List method() { 
    ArrayList list = new ArrayList(); 
    list.add(item1); 
    list.add(item2); 
    list.add(item3); 
    list.add(item4); 
    return list; 
} 

Но, скорее всего, для этого лучше иметь внутренний класс обертки. Потому что вы можете дать различные объекты значимым именам.

public DataClass method() { 
    DataClass retVal = new DataClass(item1, item2, item3, item4); 
} 

private class DataClass { 
    Object item1; 
    Object item2; 
    Object item3; 
    Object item4; 
    public DataClass(Object item1, Object item2, Object item3, Object item4) { 
     this.item1 = item1; 
     this.item2 = item2; 
     this.item3 = item3; 
     this.item4 = item4; 
    } 
} 
+1

не должен быть внутренним классом, но я согласен. Пользовательские типы> общие структуры. – rompetroll

0

Если вы хотите использовать java.util.List функциональность вы можете просто использовать:

List<String> predefinedList = Arrays.asList(new String[] { "value1", "value2", "value3", "value4" }); 

, а затем в method просто сделать return predefinedList;

В противном случае, если вы хотите, чтобы вернуть array из предопределенного значения, то вы можете просто использовать следующие обозначения в своем методе: return String[] { "value1", "value2", "value3", "value4" }

+1

Почему бы просто не вернуть массив String? – MT0

+0

Или 'Массивы.asList ("value1", "value2", "value3", "value4"); ' – Keppil

+0

Спасибо за комментарий, я обновил свой ответ. – Ioan

2

Вы также можете объявить и заполнить список массива в то же время:

List<String> list = new ArrayList<String>(){{ 
    add("A"); 
    add("B"); 
    add("C"); 
}}; 
+0

Будет ли это в новом классе или в текущем классе? (Если последнее, где в коде нужно было бы ввести, действительно новое для этого!) Спасибо! – Syler

+0

Фактически, то, что мы создаем здесь, - это анонимный внутренний класс с блоком инициализации экземпляра. Ну, вы не должны беспокоиться об этом. Вы можете объявить и использовать его в зависимости от того, какой класс/метод вы хотите. Дополнительные технические сведения об этом приведены в мой блог -> http://techblog-dm.blogspot.in/2013/06/less-known-features-of-java.html –