Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > использование ArrayList |
Автор: Rauko 23.8.2015, 17:24 | ||
учусь пользоваться коллекциями, с трудом разобралась, как пользоваться TreeSet... Однако после реализации поняла, что сам TreeSet в моем случае не до конца подходит: если данные совпадают - он не выводит строку на экран
есть ли варианты использования кроме ArrayList? как его правильно использовать с учетом необходимости сортировки? |
Автор: AntonSaburov 24.8.2015, 10:23 |
На куске кода вообще никакого вывода нет - мы не экстрасенсы. Также в Set нельзя хранить два одинаковых объекта. |
Автор: AntonSaburov 24.8.2015, 13:11 |
И вопрос какой-то странный - с ArrayList работаем или с TreeSet ? |
Автор: Rauko 24.8.2015, 15:29 | ||
вывод работает, вот в чем дело ))) но если уж так интересно, вот код вывода для
проблема заключается в том, что я не могу понять, как в ArraysList запрячь мой массив Employee. то, что строки с одинаковыми значениями нельзя хранить в TreeSet и стало причиной поиска других вариантов решения задачи... была еще мысль спросить про HashSet, вроде он тоже приемлем для решения задачи |
Автор: AntonSaburov 24.8.2015, 17:51 |
Мы же с Вами рассматривали вариант с Comparator в другой ветке. |
Автор: CPlusPlusFAN 24.8.2015, 18:25 |
Rauko, ArrayList подходит идеально. |
Автор: Rauko 24.8.2015, 21:32 | ||
это та же задача, но уже с использованием коллекций... 60 лабораторных слишком быстро сделали, преподаватель выкручивается как может - мы уже 4 раза эту задачу под разные условия переделывали... по поводу TreeSet сказал, что да, так можно(в случае с INN, где генерируется уникальное число... обычно), но для наглядности лучше сделать все 3 варианта по-разному |
Автор: Samotnik 31.8.2015, 22:29 | ||||
В ArrayList запрягается всё что угодно, Британские ученые доказали, что ArrayList используется в 78% случаях, когда программисты работают с коллекциями. Его все любят и лелеют.
Имплементация интерфейса Set существует в 97 классах Java 1.8. Тебе какая нужна? |
Автор: Rauko 2.9.2015, 13:47 | ||||||||
я не могу понять сам синтаксис, особенно, если пытаться создать коллекцию внутри класса и в последствии ее вызывать - вот пример из другой задачи: написать программу, которая будет содержать в себе информацию о сети кинотеатров(~3 элемента). каждый кинотеатр имеет - название - адрес - контактную информацию - несколько залов каждый зал имеет - название - расписание фильмов по запросу выводить: - всю информацию по пунктам(названия, адреса, контактная информация) - информацию о каждом кинотеатре(контактная информация, список залов на выбор для просмотра)
(этот вопрос немного не по теме, но возможно к нему приведется)создала массив из класса Cinema на 3 элемента, как в каждом из них запилить массив из комнат CinemaRoom(по 2-3 штучки)? через что это выполняется или как поправить код для реализации? можно ли реализовать как то первый класс через коллекции? как это будет выглядеть? какой командой выполняется заливка в ArrayList<String> filmList из другого класса? геттеры-сеттеры реализованы через стандартный эклипсовский билдер
из сетов, вероятно, лучше всего подойдет HashSet, но не пойму, как правильно в нем синтаксис выглядит и как прикрутить по примеру TreeSet сортировку(или иными методами) в ArrayList так же не могу понять, как вкрутить в него сортировку |
Автор: CPlusPlusFAN 2.9.2015, 17:23 | ||||||||||||||||||
Не очень понял. Ну вроде вот:
Типа того:
Что значит "реализовать класс через коллекции"?
Никак. HashSet несортируем. И зачем вообще нужен сет, я так до конца и не понял.
|
Автор: Rauko 2.9.2015, 18:51 | ||||||||||
в идеале, что бы как то на такое отзывалось: (описанное ниже взято от фанаря)
имхо нужна организация доступа через theatre[...]. знаю, что такое как то реализовывается, но какими путями - без понятия... два дня "эксперементирую", но не работает
можно ли вышеупомянутый theatre засунуть в коллекцию и при этом сохранить все его содержимое в том порядке, в котором оно и так там лежит? будет ли в этом смысл и делается ли так на практике?
это в другой задаче осталось... выполнить 3 сортировки списка на 10 строк по разным ключам разного типа (String, double, int). Реализовала через TreeSet, но после сдачи решила еще немного подкорректировать и сделать все сортировки по-разному. На потоке все делали через ArrayList, вот теперь думаю, какой делать третью сортировку, раз хэш несортируем. |
Автор: CPlusPlusFAN 2.9.2015, 20:57 | ||||||||||
Просто опишите метод, создающий нужное число инстансов комнат по их количеству:
И я не понимаю стремление хранить все в массивах. ArrayList достаточно хорош и лишен некоторых недостатков массива. По мне так сценариев, когда нужен именно массив, можно пересчитать по пальцам.
Так доступ по индексу, не?
Конечно, ArrayList в помощь.
Если так хочется потестить разные коллекции: LinkedList, ArrayDeque. Если хочется экзотики, можно попробовать CopyOnWriteArrayList. Все они подходят под задачу. |
Автор: Rauko 2.9.2015, 21:38 | ||
просто я еще маленький крабокодер, только выползший из массивов и еще не до конца разобравшийся с коллекциями... к слову, есть еще такой вопрос... возможно ли загружать в коллекцию(в тот же ArrayList) данные строками? например "1801" "вася" "пупкин" "4000" "главбух" "1999" "коля" "жопорук" "7000" "повар" как будет это выглядеть?(интересует сам загруз в коллекцию и выгрузка для использования) благодарю, приступаю к обкатке уже полученных данных... надеюсь пройдет гладко, если что - вернусь с вопросами |
Автор: Samotnik 2.9.2015, 22:39 | ||||
Rauko, чувствую, что вопрос какой-то очень простой, но ты спрашиваешь так, что ничего не понятно.
так?
|
Автор: Rauko 2.9.2015, 22:55 |
можно ли будет выцепить из получившейся коллекции какой то определенный элемент? можно ли будет в последствии работать с коллекцией как с массивом? если раньше, загнав в массив свои элементы я точно знала, что в столбце i находятся одни данные, а в столбце j - другие, и для всех столбцов(созданных по такой кальке) это было одинаково справедливо и по этому принципу можно было легко реализовать программу, то можно ли все это повторить для коллекций? |
Автор: Samotnik 2.9.2015, 23:45 | ||||||||
Можно:
Можно, но зачем? Коллекции, по сути и были введены, что бы отказаться от массивов.
Конечно можно - коллекции очень умные, гибкие и продуманные решения в Java для работы с данными. Их около сотни на сегодняшний день и у каждой есть свои особенности. В твоем случае подойдет ArrayList он содержит элементы в том порядке, в котором их добавляли, другие реализации могут как угодно сортировать входящие данные, поэтому тут нужно быть внимательным, точнее, хорошо знать API с чем работаешь. |
Автор: CPlusPlusFAN 3.9.2015, 01:22 | ||
Дык конечно можно выстрелить себе в ногу. Почему бы и нет? С точки зрения логики все строки равнозначны, поэтому и имеет смысл их хранить в списке. Однако каждый столбец имеет свой собственный смысл. Тогда уже список хэш мапов нужен, чтобы ключ ассоциировался с конкретным элементом записи. Вот добавится в середину или удалится какая-то колонка, если бы использовались инстансы класса, тогда сразу же бы была ошибка компиляции и вы бы это смогли корректно исправить. А в списке списков забыли везде обновить индексы - и у вас уже число как фамилия обрабатывается, например. |
Автор: Rauko 3.9.2015, 07:42 | ||
я упорно не могу понять, как именно осуществляется запрягание в коллекцию... вернее не могу понять, как коллекция распознает следующую конструкцию:
упорно не доходит, где та разница между nnn[0] и nnn[1] |
Автор: Samotnik 3.9.2015, 10:56 |
Rauko, я ведь уже писал как можно архитектуру двумерного массива перенести в коллекцию. Но теперь меня инетерсует вопрос, зачем это всё делать? |
Автор: Rauko 3.9.2015, 11:05 |
обучение пользованию коллекциями, пока ничего больше пока учила массивы, поняла принцип их пользования только когда усложнила их до трехмерных, тогда же примерно начала ими нормально пользоваться, сейчас с диким скрипом начинаю понимать коллекции... хотя пока об этом наверно еще рано говорить ![]() ![]() ![]() |
Автор: Samotnik 3.9.2015, 12:06 |
так в чем конкретно вопрос? |
Автор: Rauko 3.9.2015, 22:17 | ||
конкретно вопрос - я запрягаю определенное количество данных следующей конструкцией:
как определить, с какой "строки" коллекции данные? |
Автор: Samotnik 4.9.2015, 00:27 |
а если перефразировать, я не понял вопрос? Коллекция - хранилище данных. Что значит "с какой строки коллекции данные"? |
Автор: CPlusPlusFAN 4.9.2015, 16:15 | ||||||||
Я кажется понял. Т.е. кидаем все строки в лист и запрашиваем элемент и нужно узнать, в какой из строк запрашиваемый элемент был взят: "1801" "вася" "пупкин" "4000" "главбух" "1999" "коля" "жопорук" "7000" "повар" Если я правильно понял. Ответ: если число столбцов известно - columnsCount, то index/columnsCount. Но это бред все сливать в одну коллекцию. Можно так:
Еще лучше так:
А правильно вот так (если структура столбцов известна заранее):
|