Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / удаление элементов из TreeSet / 22 сообщений из 22, страница 1 из 1
03.07.2014, 14:28
    #38686846
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Привет!

Подскажите, пожалуйста, как удалить элементы из TreeSet по условию.

Элементами TreeSet являются объекты пользовательского класса.

Код: java
1.
2.
3.
4.
5.
6.
public class User{
String name;
String event;
}

TreeSet<User> treeset = new TreeSet<User>();



Нужно удалить все элементы из treeset для которых для которых user.name = "name"(задается как параметр)

Спасибо.
...
Рейтинг: 0 / 0
03.07.2014, 14:29
    #38686849
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
У User не определены hashCode() и equals().
...
Рейтинг: 0 / 0
03.07.2014, 14:32
    #38686854
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Код: java
1.
2.
String name2Remove = ...
treeset.removeIf(u -> name2Remove.equals(u.name));
...
Рейтинг: 0 / 0
03.07.2014, 14:35
    #38686858
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,

спасибо большое.

а hashCode() я так понимаю для удаления не нужен?
...
Рейтинг: 0 / 0
03.07.2014, 14:41
    #38686862
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtusа hashCode() я так понимаю для удаления не нужен?
TreeSet требует Comparable/Comparator. В теории можно без equals/hashCode обойтись. На практике это не желательно. Читайте JavaDoc класса java.lang.Object
...
Рейтинг: 0 / 0
03.07.2014, 14:56
    #38686886
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,

ну да,
компаратор я написал. А у меня нет метода removeIf.? jdk последняя 8, только что скачал.
...
Рейтинг: 0 / 0
03.07.2014, 14:58
    #38686888
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtusBlazkowicz,

ну да,
компаратор я написал. А у меня нет метода removeIf.? jdk последняя 8, только что скачал.
IDE ругается или компилятор?
...
Рейтинг: 0 / 0
03.07.2014, 14:59
    #38686890
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,

в принципе нет. Через idea работаю

https://yadi.sk/i/D6bzWEgAVqMkw
...
Рейтинг: 0 / 0
03.07.2014, 15:02
    #38686893
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtus,

В настройках проекта поставь language level
...
Рейтинг: 0 / 0
03.07.2014, 15:02
    #38686894
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,


да и гугл не находит такой метод.
...
Рейтинг: 0 / 0
03.07.2014, 15:03
    #38686896
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,
стоит 8
...
Рейтинг: 0 / 0
03.07.2014, 15:06
    #38686900
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtusда и гугл не находит такой метод.
У нас разный гугл?
http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html#removeIf-java.util.function.Predicate-
...
Рейтинг: 0 / 0
03.07.2014, 15:10
    #38686906
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,

:) в первых сточках не было ссылки на это)

значит ещё не включен он в jdk

я вот по этой ссылке скачал:

http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=otnjp
...
Рейтинг: 0 / 0
03.07.2014, 15:17
    #38686919
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Вообще сделал через цикл в итоге:

Код: java
1.
2.
3.
4.
5.
6.
7.
public synchronized void delete(User p_user){
        for(User u : treeSet){
            if (u.equals(p_user)){
                treeSet.remove(u);
            }
        }
    }
...
Рейтинг: 0 / 0
03.07.2014, 15:20
    #38686926
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtus:) в первых сточках не было ссылки на это)
Надо знать где искать.

mr_virtusзначит ещё не включен он в jdk
Если ты закроешь глаза, то тебя будет не видно. К чему эти домыслы? Нучись компилировать командной строкой. Чтобы от IDE не зависеть.

mr_virtusя вот по этой ссылке скачал:
http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=otnjp
Не поверишь. Я тоже.
...
Рейтинг: 0 / 0
03.07.2014, 15:26
    #38686933
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import java.util.*;

public class User{
 String name;
 String event;


public static void main(String ... args){
  Set<User> s = new HashSet<>();
  s.add(new User());
  System.out.println(s);
  s.removeIf(u -> u.name == null);
  System.out.println(s);

}

}



jdk1.8.0\bin>javac User.java
jdk1.8.0\bin>java User
[User@1db9742]
[]
...
Рейтинг: 0 / 0
03.07.2014, 15:28
    #38686939
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtusВообще сделал через цикл в итоге:

Код: java
1.
2.
3.
4.
5.
6.
7.
public synchronized void delete(User p_user){
        for(User u : treeSet){
            if (u.equals(p_user)){
                treeSet.remove(u);
            }
        }
    }



И работает? И ConcurrentModificationException нет?
...
Рейтинг: 0 / 0
03.07.2014, 15:32
    #38686946
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
Blazkowicz,

авторНадо знать где искать.

это точно!

Код: java
1.
2.
3.
4.
jdk1.8.0\bin>javac User.java
jdk1.8.0\bin>java User
[User@1db9742]
[]



То что он работать будет я, конечно, предполагал, а с IDE есть особенности.

Спасибо ещё раз!
...
Рейтинг: 0 / 0
03.07.2014, 15:33
    #38686952
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
0FD,


я в рантайме ещё не проверял :)

Сейчас запущу.
...
Рейтинг: 0 / 0
03.07.2014, 15:39
    #38686961
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
0FD,

не работает =((

я уж обрадовался..
...
Рейтинг: 0 / 0
03.07.2014, 15:42
    #38686969
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
mr_virtus,


Код: java
1.
2.
3.
4.
5.
6.
7.
public synchronized void delete(User p_user){
        for(Iterator<User> it=treeSet.iterator(); it.hasNext();){
            if (it.next().equals(p_user)){
                it.remove();
            }
        }
}
...
Рейтинг: 0 / 0
03.07.2014, 15:49
    #38686978
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление элементов из TreeSet
0FD,

да, спасибо большое! так теперь работает :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / удаление элементов из TreeSet / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]