Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
169 / 66 / 15
Регистрация: 24.03.2013
Сообщений: 467
Записей в блоге: 1

Удаление из List'a

24.03.2013, 15:39. Показов 1101. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане!

Есть иерархия классов
Primitive super class и дочерние классы
--- Circle
--- Square
--- Ellipse
--- Triangle

У меня есть List<Primitive> myList, причем туда могут быть добавлены дочерние классы класса Primitive {Circle, Square, Ellipse и Triangle}

Стоит задача удалить из данного листа только те объекты класса Ellipse, как это реализовать?
Заранее спасибо.

Вот мой говно код, если кому оно нужно
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
package example_3;
 
/*
 *      В лабораторной работе номер три, используются классы представляющие 
 *      собой простейшие плоские геометрические фигуры (круг, равнобедренный 
 *      прямоугольный треугольник, квадрат, эллипс) разработанные в лабораторной
 *      работе номер два.
 *
 *      В лабораторной работе необходимо разработать два меню.
 *      При запуске программы пользователю предлагается меню номер один:
 *          1 – создать 
 *          2 – удалить
 *          3 – вычислить площадь
 *          0 – выход 
 * 
 *      При выборе 1, 2 или 3 пункта меню, пользователю предлагается 
 *      меню под номером два:
 *          1 – круг
 *          2 – треугольник
 *          3 – квадрат
 *          4 – эллипс
 * 
 *      Меню номер 2 используется для уточнения, с объектами каких классов 
 *      будет происходить работа (создание объекта, удаление объекта или 
 *      вычисление площади объекта), после выполнения пунктов второго меню, 
 *      программа возвращается в меню номер один.
 * 
 *      При выборе элемента меню «Создать» создается объект класса соответствующей 
 *      геометрической фигуры, у пользователя запрашиваются два параметра a и b,
 *      эти параметры передаются закрытым полям класса с помощью открытых методов.
 *      Созданные объекты всех четырех классов геометрических фигур должны храниться
 *      в одной коллекции.
 *      При выборе элемента меню «Удалить» в коллекции ищется объект соответствующего
 *      класса, который и удаляется. При отсутствии объекта выбранного класса в 
 *      коллекции, пользователю сообщается, что объекты указанного класса в коллекции 
 *      отсутствуют.
 *      
 *      При выборе элемента меню «Вычислить» в цикле перебираются элементы 
 *      коллекции, и если элемент является объектом выбранного класса, 
 *      вычисляется его площадь и это значение площади выводится на экран. 
 *      После окончания цикла указывается общее количество элементов в коллекции, 
 *      а также число объектов каждого класса.
 */
 
import java.util.*;
public class Example_3 
{
    private static List<Primitive> myList = new ArrayList<Primitive>();
    private static  Scanner sc = new Scanner(System.in); 
    
    public static void main(String[] args) 
    {
        System.out.println("Задание 3");
        
        ShowFirstMenu();
        int firstOper = EnteringFirstOperation();
        
        switch(firstOper)
        {
            case 1: 
            {
                System.out.println("Выберите тип объекта для создания ");
                ShowSecondMenu();
                int secondOper = EnteringSecondOperation();
                double a = EnteringParameter("a");
                double b = EnteringParameter("b");
                
                CreateObject(secondOper, myList, a, b);
            }
            case 2:
            {
                System.out.println("Выберите тип объекта для удаления ");
                ShowSecondMenu();
                int secondOper = EnteringSecondOperation();
                
                DeleteObject(secondOper, myList);
            }
        }
     
    }
    
    private static void DeleteObject(int type, List<Primitive> list)
    {
        if(type == 1)
        {
            for(int i = 0; i < list.size(); i++)
            {
                // хз что сюда писать.
            }
        }
    }
    
    private static void CreateObject(int type, List<Primitive> list, double a, double b)
    {
        if(type == 1)
            list.add(new Circle(a, b));
        if(type == 2)
            list.add(new Triangle(a, b));
        if(type == 3)
            list.add(new Square(a, b));
        if(type == 4)
            list.add(new Ellipse(a, b));
            
    }
    
    private static void ShowFirstMenu()
    {
        System.out.println("****************************");
        System.out.println("*  1  - создать            *");
        System.out.println("*  2  - удалить            *");
        System.out.println("*  3  - вычислить площадь  *");
        System.out.println("*  0  - выход              *");  
        System.out.println("****************************");
    }
    
    private static void ShowSecondMenu()
    {
        System.out.println("****************************");
        System.out.println("*  1  - круг               *");
        System.out.println("*  2  - треугольник        *");
        System.out.println("*  3  - квадрат            *");
        System.out.println("*  4  - эллипс             *");  
        System.out.println("****************************");
    }
    
    private static int EnteringFirstOperation() 
    {  
        while (true) 
        {
            try 
            {
                System.out.print("Введите операцию ->  "); 
                int result = Integer.parseInt(sc.next());
                
                if(result >= 0 && result < 4)
                    return result;
                else
                    throw new MissingFormatArgumentException("Выход за диапазон допустимых значений");
            } 
            catch(MissingFormatArgumentException e)
            {
                System.out.println("Произошла ошибка: " + e.getMessage());
                System.out.println("Попробуйте ввести еще раз");
            }
            catch (Exception e) 
            {
                System.out.println("Произошла ошибка преобразования!\n");
                System.out.println("Попробуйте ввести еще раз");
            }
        }
    }
    
    private static int EnteringSecondOperation() 
    {  
        while (true) 
        {
            try 
            {
                System.out.print("Введите операцию ->  "); 
                int result = Integer.parseInt(sc.next());
                
                if(result > 0 && result < 5)
                    return result;
                else
                    throw new MissingFormatArgumentException("Выход за диапазон допустимых значений");
            } 
            catch(MissingFormatArgumentException e)
            {
                System.out.println("Произошла ошибка: " + e.getMessage());
                System.out.println("Попробуйте ввести еще раз");
            }
            catch (Exception e) 
            {
                System.out.println("Произошла ошибка преобразования!\n");
                System.out.println("Попробуйте ввести еще раз");
            }
        }
    }
    
    private static double EnteringParameter(String numberCount) 
    {
       
        
        while (true) 
        {
            try {
                System.out.print("Введите положительную величину " + numberCount + " \n-> ");
                double result = Double.parseDouble(sc.next());
 
                if (result <= 0) {
                    System.out.println("Введено отрицательное число!");
                    System.out.println("Попробуйте ввести еще раз другое число!");
                    continue;
                }
 
                if (!Double.isInfinite(result) && !Double.isNaN(result)) 
                    return result;
 
                System.out.println("Некорректные данные!");
                    throw new Exception("Argument is NaN or is Infinite");
            } 
            catch (Exception e) 
            {
                System.out.println("Произошла ошибка преобразования!\n");
                System.out.println("Попробуйте ввести еще раз");
            }
 
        }
    }
    
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2013, 15:39
Ответы с готовыми решениями:

Удаление текста после ALT+Enter либо удаление дублей в массиве
подзадача заключается в том, чтобы после определенного символа в моем случае это &quot;ALT+Enter&quot; удалить все слова внутри ячейки....

Здесь есть удаление столбца, как добавить удаление строки
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { int n; do {cout &lt;&lt; &quot;Razmer massiva: &quot;; cin &gt;&gt; n;...

Как сделать закачку и удаление файлов, создание и удаление каталогов?
Как сделать закачку и удаление файлов, создание и удаление каталогов?

3
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
24.03.2013, 16:13
Almaz_1993, если мне не изменяет память, то надо воспользоваться instanceof'ом, т.е. проходимся по листу, и проверяем
Java
1
if(объект instanceof Ellipse)
то удаляем
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
24.03.2013, 22:38
нехороший совет )
instanceof очень медленная операция
делайте так
Java
1
if(var.getClass().equals(TargetClass.class))
2
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
24.03.2013, 23:08
mutagen,

Не по теме:

спасибо, не знал :) погуглил, действительно так)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2013, 23:08
Помогаю со студенческими работами здесь

Лечение или удаление вируса Drive.bat - Удаление вирусов
Здравствуйте. Помогите пожалуйста. Словил на флешку этот Driver.bat, который создает ярлыки. Еще и перекинул все на комп. Пробовал...

Описать класс «множество» (добавление и удаление элемента, пересечение, объединение и удаление множеств )
Описать класс «множество», позволяющий выполнять основные операции – добавление и удаление элемента, пересечение, объединение и удаление...

Удаление загрузочной записи о Windows8.1 и удаление самой Windows 8.1 при наличии двух ОС
На ноутбуке на разделе C Windows XP ,установил Windows 8.1 на логический раздел E.Теперь хочу удалить 8.1 и установить туда 7.В БИОСе...

Как закрыть доступ на удаление файлов и автоматизировать их удаление через определенный промежуток времени?
Добрый день, жители форума. Есть следующая проблема: Имеется компьютер с виндовс хр, на один из дисков пишется видео с камер видео...

Удаление элементов массива кратных своим порядковым номерам и удаление их путем сдвига вперед
Ребята, всем привет. Дистанционная практика (связи с короновирусом) дает о себе знать. Ответ на вопрос заданный учителю приходиться ждать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru