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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование ArrayList, как правильно использовать 
:(
    Опции темы
Rauko
Дата 2.9.2015, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



можно ли будет выцепить из получившейся коллекции какой то определенный элемент? можно ли будет в последствии работать с коллекцией как с массивом?

если раньше, загнав в массив свои элементы я точно знала, что в столбце i находятся одни данные, а в столбце j - другие, и для всех столбцов(созданных по такой кальке) это было одинаково справедливо и по этому принципу можно было легко реализовать программу, то можно ли все это повторить для коллекций?
PM MAIL   Вверх
Samotnik
Дата 2.9.2015, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Rauko @  2.9.2015,  22:55 Найти цитируемый пост)
можно ли будет выцепить из получившейся коллекции какой то определенный элемент? 

Можно:
Код

//создаем внутренний список, в котором будет 4 элемента
List<String> stringList = new ArrayList<>(4);

//заполняем
stringList.add("1801");
stringList.add("вася");
stringList.add("пупкин");
stringList.add("4000");
stringList.add("главбух");

//Достаем, к примеру 3-й
stringList.get(2); //с нуля начинается, да?

Цитата(Rauko @  2.9.2015,  22:55 Найти цитируемый пост)
можно ли будет в последствии работать с коллекцией как с массивом?

Можно, но зачем? Коллекции, по сути и были введены, что бы отказаться от массивов. 
Код

//создаем внутренний список, в котором будет 4 элемента
List<String> stringList = new ArrayList<>(4);

//заполняем
stringList.add("1801");
stringList.add("вася");
stringList.add("пупкин");
stringList.add("4000");
stringList.add("главбух");

//перегоняем коллекцию в массив
String[] stockArr = new String[stringList.size()];
stockArr = stringList.toArray(stockArr);


Цитата(Rauko @  2.9.2015,  22:55 Найти цитируемый пост)
если раньше, загнав в массив свои элементы я точно знала, что в столбце i находятся одни данные, а в столбце j - другие, и для всех столбцов(созданных по такой кальке) это было одинаково справедливо и по этому принципу можно было легко реализовать программу, то можно ли все это повторить для коллекций? 

Конечно можно - коллекции очень умные, гибкие и продуманные решения в Java для работы с данными. Их около сотни на сегодняшний день и у каждой есть свои особенности. В твоем случае подойдет ArrayList он содержит элементы в том порядке, в котором их добавляли, другие реализации могут как угодно сортировать входящие данные, поэтому тут нужно быть внимательным, точнее, хорошо знать API с чем работаешь. 

Это сообщение отредактировал(а) Samotnik - 2.9.2015, 23:47
PM MAIL   Вверх
CPlusPlusFAN
Дата 3.9.2015, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rauko @  2.9.2015,  21:38 Найти цитируемый пост)
к слову, есть еще такой вопрос... возможно ли загружать в коллекцию(в тот же ArrayList) данные строками? например
"1801" "вася" "пупкин" "4000" "главбух"
"1999" "коля" "жопорук" "7000" "повар"
как будет это выглядеть?(интересует сам загруз в коллекцию и выгрузка для использования)

Дык конечно можно выстрелить себе в ногу. Почему бы и нет? С точки зрения логики все строки равнозначны, поэтому и имеет смысл их хранить в списке. Однако каждый столбец имеет свой собственный смысл. Тогда уже список хэш мапов нужен, чтобы ключ ассоциировался с конкретным элементом записи.
Вот добавится в середину или удалится какая-то колонка, если бы использовались инстансы класса, тогда сразу же бы была ошибка компиляции и вы бы это смогли корректно исправить. А в списке списков забыли везде обновить индексы - и у вас уже число как фамилия обрабатывается, например. 

Это сообщение отредактировал(а) CPlusPlusFAN - 3.9.2015, 01:23
PM MAIL ICQ Jabber   Вверх
Rauko
Дата 3.9.2015, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Samotnik @  2.9.2015,  23:45 Найти цитируемый пост)
Можно:

я упорно не могу понять, как именно осуществляется запрягание в коллекцию... вернее не могу понять, как коллекция распознает следующую конструкцию:
Код

String[][] nnn = new String[4][];
    nnn[0] = new String[5];
    nnn[0] = {"fd","gs","tw","","14r"};
    nnn[1] = new String[5];
    nnn[1] = {"fd","qws","12w","","14r"};


упорно не доходит, где та разница между nnn[0] и nnn[1]
PM MAIL   Вверх
Samotnik
Дата 3.9.2015, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Rauko, я ведь уже писал как можно архитектуру двумерного массива перенести в коллекцию. Но теперь меня инетерсует вопрос, зачем это всё  делать?
PM MAIL   Вверх
Rauko
Дата 3.9.2015, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



обучение пользованию коллекциями, пока ничего больше

пока учила массивы, поняла принцип их пользования только когда усложнила их до трехмерных, тогда же примерно начала ими нормально пользоваться, сейчас с диким скрипом начинаю понимать коллекции... хотя пока об этом наверно еще рано говорить smile  smile  smile 
PM MAIL   Вверх
Samotnik
Дата 3.9.2015, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



так в чем конкретно вопрос?  
PM MAIL   Вверх
Rauko
Дата 3.9.2015, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



конкретно вопрос - я запрягаю определенное количество данных следующей конструкцией:

Код

List<String> stringList = new ArrayList<>(4);

stringList.add("...");
....
stringList = new ArrayList<>(4);
stringList.add("...");
....
stringList = new ArrayList<>(4);
stringList.add("...");
....
stringList = new ArrayList<>(4);
stringList.add("...");
....


как определить, с какой "строки" коллекции данные?
PM MAIL   Вверх
Samotnik
Дата 4.9.2015, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Rauko @  3.9.2015,  22:17 Найти цитируемый пост)
как определить, с какой "строки" коллекции данные? 

а если перефразировать, я не понял вопрос? Коллекция - хранилище данных. Что значит "с какой строки коллекции данные"?
PM MAIL   Вверх
CPlusPlusFAN
Дата 4.9.2015, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Samotnik @  4.9.2015,  00:27 Найти цитируемый пост)
а если перефразировать, я не понял вопрос? Коллекция - хранилище данных. Что значит "с какой строки коллекции данные"? 

Я кажется понял. Т.е. кидаем все строки в лист и запрашиваем элемент и нужно узнать, в какой из строк запрашиваемый элемент был взят:
"1801" "вася" "пупкин" "4000" "главбух"
"1999" "коля" "жопорук" "7000" "повар"

Если я правильно понял.
Ответ: если число столбцов известно - columnsCount, то  index/columnsCount. Но это бред все сливать в одну коллекцию.
Можно так:
Код

List<List<String>> records = new ArrayList<>();
records.add(new ArrayList<>(5));
records.get(0).add("...");
records.get(0).add("...");
...

Еще лучше так:
Код

List<Map<String, String>> records = new ArrayList<>();
records.add(new HashMap<>(5));
records.get(0).put("field1", "...");
records.get(0).put("field2", "...");
...

А правильно вот так (если структура столбцов известна заранее):
Код

class Record {
private String field1;
private String field2;
...
// getters, setters
}

List<Record> records = new ArrayList<>();
records.add(new Record());
records.add(new Record());
...


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

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

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


 




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


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

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