|
0 / 0 / 1
Регистрация: 19.02.2012
Сообщений: 83
|
|||||||||||||||||||||||||||||||
Как реализовать коллекцию?21.02.2013, 01:34. Показов 1382. Ответов 5
Метки нет (Все метки)
Здравствуйте.
У меня был вот такой код: Создан массив автобуса:
Таким образом мне надо было взять массив "passengers" и удалить из него лишних людей. Но так как в Яве размер массива нельзя изменять, то мне посоветовали массивы поменять на коллекции. Вот тут я немного в смятении, так как коллекции только начал изучать.. подскажите как поступить?? Я так понимаю, мне надо массив passengers и переделать его в коллекцию. Из всех прочитанных я думаю мне подойдёт LinkedList, так как необходимо будет удалить элементы начиная с середины списка до конца. Тогда получается что-то типо:
1. Я не понимаю даже можно ли в 1 элемент списка добавить какбы массив из name, age, card???? Чтобы потом по етому списку пробежаться как по строкам и удалить ненужные строки, содержащие name, age, card ?? 2. Как правильно записать добавление элементов в список passengers? 3. И надо ли менять запись в классе Passengers? Например, при объявлении переменных name, age, card?? Прошу помогите.. я быстро схвачу всё и научусь.. Добавлено через 3 часа 1 минуту Кажется, мне надо сделать наподобие:
Если да, то return должен быть passengers или pass?
0
|
|||||||||||||||||||||||||||||||
| 21.02.2013, 01:34 | |
|
Ответы с готовыми решениями:
5
Как реализовать пользовательскую коллекцию в виде структуры, или преобразовать класс коллекции LIst в структуру Реализовать коллекцию |
|
|
||||||||||||||||
| 21.02.2013, 13:51 | ||||||||||||||||
List pass; - список содержащий объекты типа Object или его наследников. равносильно List<Object> pass; т.е. например, pass.get(i) вернет тебе объект типа Object по индексу i. вне зависимости от того, что ты туда всунешь. для наглядности:
List<Passengers> pass; - список содержащий объекты типа Passengers или его наследников. т.е. например, pass.get(i) вернет тебе объект типа Passengers по индексу i. для наглядности:
да, и мне кажется тебе нужно немного подтянуть терминологию)
1
|
||||||||||||||||
|
0 / 0 / 1
Регистрация: 19.02.2012
Сообщений: 83
|
|||||||||||||||||||||||||||||||
| 21.02.2013, 20:17 [ТС] | |||||||||||||||||||||||||||||||
|
1)
В своём куске кода я полностью разобрался, а вот в Ваших двух примерах немного не допонимаю.. В первом варианте при pass.get(i).getAge() возникает ошибка, потому что все добавляемые объекты не относятся к классу Passengers, в котором имеется метод getAge() - так? А во втором варианте все объекты относятся к классу Passengers, поетому ссылаясь на них можно и задействовать метод getAge, который прописан в этом классе - так?? 2) Помогите ещё дальше разобраться с моим кодом: здесь находится код всего файла Program.java (для модератора: при использовании спойлера форматирование под яву пропадает)
import java.util.ArrayList;
import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Program { public static void main(String[] args) { new Program().AllActions(); } private void AllActions() { Bus a = input(); System.out.println("==================== ======================================== ======"); output(a); } private Bus input() { System.out.println("=== Vvodim informaciju ==="); System.out.println("=== Izna4alno v avtobuse 0 chelovek ==="); System.out.print("Skolko chelovek vmeshaet avtobus: "); String max_seats = keyboard(); System.out.print("Skolko chelovek zelaet zajti v avtobus: "); String enter_number = keyboard(); Passengers passeng[] = new Passengers[Integer.valueOf(enter_number)]; for(int i=0; i<passeng.length; i++) { passeng[i] = inputPassengers(); } Bus bus = new Bus(max_seats, enter_number, passeng); bus.setMax_seats(Integer.valueOf(max_sea ts)); bus.setEnter_number(Integer.valueOf(ente r_number)); return bus; } private Passengers inputPassengers() { System.out.print("Name: "); String name = keyboard(); System.out.print("Age: "); String age = keyboard(); System.out.print("Card (yes/no): "); String card = keyboard(); /* Passengers passengers = new Passengers(); passengers.setName(name); passengers.setAge(Integer.valueOf(age)); passengers.setCard(card);*/ List<Passengers> pass = new LinkedList<Passengers>(); Passengers passengers = new Passengers(); passengers.setName(name); passengers.setAge(Integer.valueOf(age)); passengers.setCard(card); pass.add(passengers); return pass; } private void output(Bus bus) { System.out.println("Avtobus vmeshaet " + bus.getMax_seats() + " chelovek"); System.out.println("------------"); System.out.println("V avtobus zashli " + bus.getEnter_number() + " chelovek:"); System.out.println("Name\tAge\tCard"); for(Passengers passeng : bus.getPasseng()) { System.out.println(passeng.getName() + "\t" + passeng.getAge() + "\t" + passeng.getCard()); } /* if(bus.getPasseng().length > bus.getMax_seats()) { for(int i=0; i < bus.getPasseng().length-1; i++) { if(i >= (bus.getMax_seats()-1)) Bus.passeng[i]; } } for(Passengers passeng : bus.getPasseng()) { System.out.println(passeng.getName() + "\t" + passeng.getAge() + "\t" + passeng.getCard()); }*/ } private String keyboard() { Scanner scan = new Scanner(System.in); return scan.next(); } } Я прописал следующий код:
Менял в етих строках на:
Слишком много изменений типов объектов / массивов на List необходимо сделать, так что я запутался... Прошу помогите!
0
|
|||||||||||||||||||||||||||||||
|
|
||
| 21.02.2013, 22:26 | ||
|
во втором случае все то же самое, но роль самого общего типа будет уже Passengers. все возвращаемые элементы будут иметь именно этот тип, а засовывать можно только Passengers и его наследников можно почитать про generics если есть желание сломать себе мозг. так называется та самая магия с треугольными скобочками по поводу 2) массивы и коллекции это разные структуры данных. работа с ними выглядит совершенно иначе (http://www.ibm.com/developerwo... ion13.html) придется или переписывать программу под коллекции или отказаться от них затирая в массиве ненужные ячейки null'ом
1
|
||
|
0 / 0 / 1
Регистрация: 19.02.2012
Сообщений: 83
|
|
| 21.02.2013, 23:17 [ТС] | |
|
окий. ну вроде всё понял. думаю если заново написать программу, используя коллекции, то у меня всё получится, но щас этим уже заниматься не буду - применю новые знания в следующий раз.
а Вам, AckiyBolt, огромное спасибо!
0
|
|
|
|
|
| 21.02.2013, 23:20 | |
|
0
|
|
| 21.02.2013, 23:20 | |
|
Помогаю со студенческими работами здесь
6
Реализовать класс-коллекцию, хранящую элементы в виде списка массивов
Как создать коллекцию?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|