![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
учусь пользоваться коллекциями, с трудом разобралась, как пользоваться TreeSet... Однако после реализации поняла, что сам TreeSet в моем случае не до конца подходит: если данные совпадают - он не выводит строку на экран
есть ли варианты использования кроме ArrayList? как его правильно использовать с учетом необходимости сортировки? |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
На куске кода вообще никакого вывода нет - мы не экстрасенсы. Также в Set нельзя хранить два одинаковых объекта.
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
И вопрос какой-то странный - с ArrayList работаем или с TreeSet ?
|
|||
|
||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
вывод работает, вот в чем дело ))) но если уж так интересно, вот код вывода для
проблема заключается в том, что я не могу понять, как в ArraysList запрячь мой массив Employee. то, что строки с одинаковыми значениями нельзя хранить в TreeSet и стало причиной поиска других вариантов решения задачи... была еще мысль спросить про HashSet, вроде он тоже приемлем для решения задачи |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Мы же с Вами рассматривали вариант с Comparator в другой ветке.
|
|||
|
||||
CPlusPlusFAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Rauko, ArrayList подходит идеально.
|
|||
|
||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
это та же задача, но уже с использованием коллекций... 60 лабораторных слишком быстро сделали, преподаватель выкручивается как может - мы уже 4 раза эту задачу под разные условия переделывали... по поводу TreeSet сказал, что да, так можно(в случае с INN, где генерируется уникальное число... обычно), но для наглядности лучше сделать все 3 варианта по-разному |
|||
|
||||
CPlusPlusFAN |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Set будет работать только в случае, если уберете из Employee методы equals и hashCode и то, если не кидать в него одинаковые объекты. Таков контракт сетов. Листы, например, подходят любые, очереди и т.д. Это сообщение отредактировал(а) CPlusPlusFAN - 27.8.2015, 02:49 |
||||
|
|||||
Samotnik |
|
||||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
В ArrayList запрягается всё что угодно, Британские ученые доказали, что ArrayList используется в 78% случаях, когда программисты работают с коллекциями. Его все любят и лелеют.
Имплементация интерфейса Set существует в 97 классах Java 1.8. Тебе какая нужна? |
||||
|
|||||
Rauko |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
я не могу понять сам синтаксис, особенно, если пытаться создать коллекцию внутри класса и в последствии ее вызывать - вот пример из другой задачи: написать программу, которая будет содержать в себе информацию о сети кинотеатров(~3 элемента). каждый кинотеатр имеет - название - адрес - контактную информацию - несколько залов каждый зал имеет - название - расписание фильмов по запросу выводить: - всю информацию по пунктам(названия, адреса, контактная информация) - информацию о каждом кинотеатре(контактная информация, список залов на выбор для просмотра)
(этот вопрос немного не по теме, но возможно к нему приведется)создала массив из класса Cinema на 3 элемента, как в каждом из них запилить массив из комнат CinemaRoom(по 2-3 штучки)? через что это выполняется или как поправить код для реализации? можно ли реализовать как то первый класс через коллекции? как это будет выглядеть? какой командой выполняется заливка в ArrayList<String> filmList из другого класса? геттеры-сеттеры реализованы через стандартный эклипсовский билдер
из сетов, вероятно, лучше всего подойдет HashSet, но не пойму, как правильно в нем синтаксис выглядит и как прикрутить по примеру TreeSet сортировку(или иными методами) в ArrayList так же не могу понять, как вкрутить в него сортировку |
||||||||
|
|||||||||
CPlusPlusFAN |
|
||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Не очень понял. Ну вроде вот:
Типа того:
Что значит "реализовать класс через коллекции"?
Никак. HashSet несортируем. И зачем вообще нужен сет, я так до конца и не понял.
|
||||||||||||
|
|||||||||||||
Rauko |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
в идеале, что бы как то на такое отзывалось: (описанное ниже взято от фанаря)
имхо нужна организация доступа через theatre[...]. знаю, что такое как то реализовывается, но какими путями - без понятия... два дня "эксперементирую", но не работает
можно ли вышеупомянутый theatre засунуть в коллекцию и при этом сохранить все его содержимое в том порядке, в котором оно и так там лежит? будет ли в этом смысл и делается ли так на практике?
это в другой задаче осталось... выполнить 3 сортировки списка на 10 строк по разным ключам разного типа (String, double, int). Реализовала через TreeSet, но после сдачи решила еще немного подкорректировать и сделать все сортировки по-разному. На потоке все делали через ArrayList, вот теперь думаю, какой делать третью сортировку, раз хэш несортируем. |
||||||||||
|
|||||||||||
CPlusPlusFAN |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Просто опишите метод, создающий нужное число инстансов комнат по их количеству:
И я не понимаю стремление хранить все в массивах. ArrayList достаточно хорош и лишен некоторых недостатков массива. По мне так сценариев, когда нужен именно массив, можно пересчитать по пальцам.
Так доступ по индексу, не? Конечно, ArrayList в помощь. Если так хочется потестить разные коллекции: LinkedList, ArrayDeque. Если хочется экзотики, можно попробовать CopyOnWriteArrayList. Все они подходят под задачу. |
||||||
|
|||||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
просто я еще маленький крабокодер, только выползший из массивов и еще не до конца разобравшийся с коллекциями... к слову, есть еще такой вопрос... возможно ли загружать в коллекцию(в тот же ArrayList) данные строками? например "1801" "вася" "пупкин" "4000" "главбух" "1999" "коля" "жопорук" "7000" "повар" как будет это выглядеть?(интересует сам загруз в коллекцию и выгрузка для использования) благодарю, приступаю к обкатке уже полученных данных... надеюсь пройдет гладко, если что - вернусь с вопросами Это сообщение отредактировал(а) Rauko - 2.9.2015, 21:46 |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Rauko, чувствую, что вопрос какой-то очень простой, но ты спрашиваешь так, что ничего не понятно.
так?
Это сообщение отредактировал(а) Samotnik - 2.9.2015, 23:46 |
|||
|
||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
можно ли будет выцепить из получившейся коллекции какой то определенный элемент? можно ли будет в последствии работать с коллекцией как с массивом?
если раньше, загнав в массив свои элементы я точно знала, что в столбце i находятся одни данные, а в столбце j - другие, и для всех столбцов(созданных по такой кальке) это было одинаково справедливо и по этому принципу можно было легко реализовать программу, то можно ли все это повторить для коллекций? |
|||
|
||||
Samotnik |
|
||||||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Можно:
Можно, но зачем? Коллекции, по сути и были введены, что бы отказаться от массивов.
Конечно можно - коллекции очень умные, гибкие и продуманные решения в Java для работы с данными. Их около сотни на сегодняшний день и у каждой есть свои особенности. В твоем случае подойдет ArrayList он содержит элементы в том порядке, в котором их добавляли, другие реализации могут как угодно сортировать входящие данные, поэтому тут нужно быть внимательным, точнее, хорошо знать API с чем работаешь. Это сообщение отредактировал(а) Samotnik - 2.9.2015, 23:47 |
||||||
|
|||||||
CPlusPlusFAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Дык конечно можно выстрелить себе в ногу. Почему бы и нет? С точки зрения логики все строки равнозначны, поэтому и имеет смысл их хранить в списке. Однако каждый столбец имеет свой собственный смысл. Тогда уже список хэш мапов нужен, чтобы ключ ассоциировался с конкретным элементом записи. Вот добавится в середину или удалится какая-то колонка, если бы использовались инстансы класса, тогда сразу же бы была ошибка компиляции и вы бы это смогли корректно исправить. А в списке списков забыли везде обновить индексы - и у вас уже число как фамилия обрабатывается, например. Это сообщение отредактировал(а) CPlusPlusFAN - 3.9.2015, 01:23 |
|||
|
||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
я упорно не могу понять, как именно осуществляется запрягание в коллекцию... вернее не могу понять, как коллекция распознает следующую конструкцию:
упорно не доходит, где та разница между nnn[0] и nnn[1] |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Rauko, я ведь уже писал как можно архитектуру двумерного массива перенести в коллекцию. Но теперь меня инетерсует вопрос, зачем это всё делать?
|
|||
|
||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
обучение пользованию коллекциями, пока ничего больше
пока учила массивы, поняла принцип их пользования только когда усложнила их до трехмерных, тогда же примерно начала ими нормально пользоваться, сейчас с диким скрипом начинаю понимать коллекции... хотя пока об этом наверно еще рано говорить ![]() ![]() ![]() |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
так в чем конкретно вопрос?
|
|||
|
||||
Rauko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 22.6.2009 Репутация: нет Всего: нет |
конкретно вопрос - я запрягаю определенное количество данных следующей конструкцией:
как определить, с какой "строки" коллекции данные? |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
||||
|
||||
CPlusPlusFAN |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Я кажется понял. Т.е. кидаем все строки в лист и запрашиваем элемент и нужно узнать, в какой из строк запрашиваемый элемент был взят: "1801" "вася" "пупкин" "4000" "главбух" "1999" "коля" "жопорук" "7000" "повар" Если я правильно понял. Ответ: если число столбцов известно - columnsCount, то index/columnsCount. Но это бред все сливать в одну коллекцию. Можно так:
Еще лучше так:
А правильно вот так (если структура столбцов известна заранее):
Это сообщение отредактировал(а) CPlusPlusFAN - 4.9.2015, 16:16 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |