Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113

JList сделать метод на удаление дубликатов

25.07.2012, 00:12. Показов 1666. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется Jlist, туда перекидывается значение из другого Jlist, но проблема в том, что если нажать ещё раз , то и добавиться в другой Jlist тоже.
Как избавиться от этого?

Добавлено через 11 минут
Цитата Сообщение от jvov Посмотреть сообщение
Имеется Jlist, туда перекидывается значение из другого Jlist, но проблема в том, что если нажать ещё раз , то и добавиться в другой Jlist тоже.
Как избавиться от этого?
Нужно написать метод, что бы он проверял на дубликаты и если есть удалял их, как это сделать?

Добавлено через 4 часа 32 минуты
Цитата Сообщение от jvov Посмотреть сообщение
Имеется Jlist, туда перекидывается значение из другого Jlist, но проблема в том, что если нажать ещё раз , то и добавиться в другой Jlist тоже.
Как избавиться от этого?

Добавлено через 11 минут


Нужно написать метод, что бы он проверял на дубликаты и если есть удалял их, как это сделать?
Неужели, никто подсказать не сможет?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2012, 00:12
Ответы с готовыми решениями:

Удаление элементов из списка JList
Как удалить элементы из списка, выбранные пользователем? Указываю параметр у созданного списка DefaultListModel model_ = new...

Удаление дубликатов + ассинхронное удаление из другой таблицы
Есть две таблицы tbl_content : id, title tbl_pics : id, picname 1. Нужно удалить дубликаты "title" из таблицы...

Удаление дубликатов
Вопрос, как удалить дубликаты в столбце. Интересует удаление и дубликатов, и оригиналов дубликатов. Другими словами, если есть два...

6
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.07.2012, 00:54
ну вытащите ListModel при помощи getModel() и пробегитесь по нему и поудаляйте дубликаты
1
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113
25.07.2012, 01:17  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
ну вытащите ListModel при помощи getModel() и пробегитесь по нему и поудаляйте дубликаты
Вот у меня, что-то наподобие такого кода, только не работает ничего и я запутался.

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
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            String a = startGameWindow.getListOfPlayers().getSelectedValue()
                    .toString();
            ArrayList<String> list = new ArrayList<String>();
            
        ListModel model = startGameWindow.listOfPlayers.getModel();
            for (int i = 0; i<=model.getSize(); i++){
                if (a == model.getElementAt(i)){
                    model.remove(i);
                }
            }
            list.add(a);
            startGameWindow.setListWhoWantPlay(list);
            
            }
        }
    
    
    }
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
25.07.2012, 10:46
не знаю что у вас в классе StartGameWindow, поэтому заглушка внизу
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
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            Set was = new HashSet();
            for (int i = 0; i < model.getSize(); i++) {
                if(was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
чтобы не создавать зря сеты на каждый эвент, можно вынести его в переменные класса и просто чистить перед завершением valueChanged
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
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
    private Set was = new HashSet();
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            for (int i = 0; i < model.getSize(); i++) {
                if (was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
            was.clear();
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
0
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113
26.07.2012, 00:08  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
не знаю что у вас в классе StartGameWindow, поэтому заглушка внизу
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
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            Set was = new HashSet();
            for (int i = 0; i < model.getSize(); i++) {
                if(was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
чтобы не создавать зря сеты на каждый эвент, можно вынести его в переменные класса и просто чистить перед завершением valueChanged
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
import java.util.HashSet;
import java.util.Set;
 
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
 
public class SelectPlayersListListener implements ListSelectionListener {
 
    private StartGameWindow startGameWindow;
    private Set was = new HashSet();
 
    public SelectPlayersListListener(StartGameWindow startGameWindow) {
        this.startGameWindow = startGameWindow;
    }
 
    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
            DefaultListModel model = (DefaultListModel) startGameWindow.listOfPlayers.getModel();
            for (int i = 0; i < model.getSize(); i++) {
                if (was.contains(model.getElementAt(i))) {
                    model.remove(i);
                } else {
                    was.add(model.getElementAt(i));
                }
            }
            was.clear();
        }
    }
 
}
 
class StartGameWindow {
 
    public JList listOfPlayers;
 
    public void setListWhoWantPlay(DefaultListModel list) {
        listOfPlayers.setModel(list);
    }
 
    public JList getListOfPlayers() {
        return listOfPlayers;
    }
 
}
Что то не получается, а потом HashSet сетать в модель?

у меня этот метод startGameWindow.setListWhoWantPlay(list) записывал в JList

Java
1
2
3
4
5
6
7
8
public void setListWhoWantPlay(ArrayList<String> list)
    {
        for (int i = 0; i < list.size(); i++)
        {
            model2.add(i, list.get(i));
           
        }
    }
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.07.2012, 01:29
Цитата Сообщение от jvov Посмотреть сообщение
Что то не получается, а потом HashSet сетать в модель?
вы прочитайте мой код, где вы там видите сетание хашсета??? он нужен просто как воспомогательный контейнер, там может быть и любой List или Map

Добавлено через 43 секунды
Цитата Сообщение от jvov Посмотреть сообщение
у меня этот метод startGameWindow.setListWhoWantPlay(list) записывал в JList
у вас записывает, а у меня совершенно другой подход
1
1 / 1 / 4
Регистрация: 28.09.2011
Сообщений: 113
26.07.2012, 01:50  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
вы прочитайте мой код, где вы там видите сетание хашсета??? он нужен просто как воспомогательный контейнер, там может быть и любой List или Map

Добавлено через 43 секунды

у вас записывает, а у меня совершенно другой подход
Все - разобрался. Спасибо большое. Все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2012, 01:50
Помогаю со студенческими работами здесь

Удаление дубликатов
namespace ConsoleApp3 { class Program { static void Main(string args) { int c; ...

Удаление дубликатов
Всем привет Пробую зачистить строки от повторений Текст строк примерно такой RRs.Mmm.sss.20190124_185954.txt 19:00:01...

Удаление дубликатов
Как удалить из базы дубликаты, т.е. primati key у них отличаются, а отстальный данные совпадают?

Удаление дубликатов
Как с помощью макроса удалить дубликаты( не одну одинаковую линию из двух как в Экселе) а две Пример: 123456 234516 123456 Должна...

Удаление дубликатов
Как организовать удаление дубликатов формулой? Такой странный вопрос.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru