
Y
14.04.2017
11:47:44
Кто может набросить идею, почему, в тестах HashSet.containsAll(ArrayList) даёт false, а ArrayList.containsAll(HashSet) даёт true, при уверенно одинаковых коллекциях(распечатал)

Oleg
14.04.2017
11:53:53
hashCode() нормально написан?

Y
14.04.2017
11:54:54

Павел
14.04.2017
11:59:51
зачекал на интах и стрингах идемпотентно

Google

Павел
14.04.2017
12:00:11
что-то не так с объектами видимо

Valeriy
14.04.2017
12:01:04
В листе дубликаты просто

Y
14.04.2017
12:01:05

Valeriy
14.04.2017
12:01:14
Я даже проверил
Все ради вас

Y
14.04.2017
12:02:44

Adam
14.04.2017
12:03:14
мы что тут в пазлеры играем?

Павел
14.04.2017
12:03:19
с дубликатами в листе все тоже самое, as expected оба варианта true

Adam
14.04.2017
12:03:23
возьми и продебажь

Oleg
14.04.2017
12:04:01
Ну так не интересно же, подебажь. Так любой может

Y
14.04.2017
12:04:40
мы что тут в пазлеры играем?
я и попросил идею, потому что в дебаге даёт true и false, осталось только equals и hashcode дебажить генерируемые

Oleg
14.04.2017
12:04:41
null вроде тоже не должен мешать ничему

Google

Valeriy
14.04.2017
12:05:11
Код тогда в студию

Oleg
14.04.2017
12:07:13
HashSet позволяет нулл правда?

Valeriy
14.04.2017
12:07:51
Да

Oleg
14.04.2017
12:10:16
На всякий случай тупой вопрос, equals тоже нормальный и консистентный с hashCode() правда?


Павел
14.04.2017
12:10:26
в общем )) чет ты @loskin темнишь ))
public class FuckThemAllTest {
@Test
public void name() throws Exception {
List<Fake> list = new ArrayList<?);
list.add(new Fake(1, "Vasya"));
list.add(new Fake(2, "Petya"));
list.add(new Fake(3, "Kolay"));
list.add(new Fake(4, "Sanya"));
Set<Fake> set = new HashSet<?);
set.add(new Fake(1, "Vasya"));
set.add(new Fake(2, "Petya"));
set.add(new Fake(3, "Kolay"));
set.add(new Fake(4, "Sanya"));
Assert.assertTrue(list.containsAll(set));
Assert.assertTrue(set.containsAll(list));
}
static class Fake {
final int id;
final String name;
public Fake(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Fake fake = (Fake) o;
return id == fake.id &&
Objects.equals(name, fake.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
}
все робит как надо )
смотри очепятки у себя


Y
14.04.2017
12:11:38

Oleg
14.04.2017
12:13:50
Нене, просто спросил чё код-то смотреть тогда и впрямь подебажить можно

Y
14.04.2017
12:21:03
в общем, спасибо что откликнулись, выносить "много", на закрытие дискуссии "минимальная часть", https://ideone.com/CRKwtS , пойду дальше копать

Павел
14.04.2017
12:21:13
а ты там случайно объекты не меняешь после того как в сет запихал?
ну там нейм сменил или айди )

Anton
14.04.2017
12:24:33

Павел
14.04.2017
12:25:04
а это у тебя модели получаютс?
и что за сет и лист в итоге?

Y
14.04.2017
12:25:13

Павел
14.04.2017
12:25:20
это прокси какие нить

Y
14.04.2017
12:27:44

Google

Павел
14.04.2017
12:28:32
реализация сета?

Y
14.04.2017
12:28:45

Павел
14.04.2017
12:29:10
то есть ни ОРМов ничего такого нет?
после того как объект в сет попал поля меняются?

Y
14.04.2017
12:30:01
кусок теста, один поток

Oleg
14.04.2017
12:30:21
Сделайте пожалуйста там где он распечатывает и имя, еще getClass ()
На всякий случай
Хотя я не совсем точно представляю как оно может помешать если классы разные. Хотя может наверное :)
Прокси вечно все ломают

Y
14.04.2017
12:33:41

Oleg
14.04.2017
12:34:14
Нене на пятой и 26 строке

Oleg
14.04.2017
12:34:33
Класс объектов в сете и листе

Y
14.04.2017
12:34:36

Pavel
14.04.2017
12:34:41
ой что то новый разбор полётов полслушал и думаю вот на скале начать писать

Y
14.04.2017
12:34:46
хорошо, понял

Oleg
14.04.2017
12:36:07
Класс девайса

Mikhail
14.04.2017
12:36:47
А какой выпуск вдохновляет на скалке писать?

Oleg
14.04.2017
12:37:02
Последний про банк?
132 или как там его

Google

Mikhail
14.04.2017
12:38:06
О, коротенький

Y
14.04.2017
12:38:29
Класс девайса
у всех core.db.entities.Device, ладно, спасибо за отзывчивость, пойду копать, а может на List сменю, хотя это наверное будет потенциальная ошибка

Anton
14.04.2017
12:43:23
ну у тебя с хешкодом проблемы, как я понимаю
потому что эрэй лист проверяет только на equals
и там все норм

Евгений
14.04.2017
12:50:05

Admin
ERROR: S client not available

Евгений
14.04.2017
12:51:18
за весь подкаст ни разу не прозвучало ни "монада", ни "функтор" :))

The mirror
14.04.2017
12:56:05
Ну там было про scalaz - а это самое мясо в скале со всеми этими функторами и тому подобное

Mikhail
14.04.2017
12:59:26

Valeriy
14.04.2017
13:00:33

Y
14.04.2017
13:03:58

Valeriy
14.04.2017
13:08:14
Ну тогда точно что-то с хешом.
Скорее всего объекты изменяются после того, как попали в сет. Потому что хэшкод вроде нормально написан.
Попробуй переопределить хэшкод, чтобы константу возвращал
Должно стать true

Kirill
14.04.2017
13:08:28
о чем я всегда и говорил

Y
14.04.2017
13:13:52
Должно стать true
Да, стал true, пойду разбор полётов устраивать с бд, но стоя в дебаге, всё выглядит культурно, и вроде все операции синхронные

Pavel
14.04.2017
13:29:36
+
положил на стек в общем этот курс от твиттера
https://www.coursera.org/specializations/scala

Kirill
14.04.2017
14:13:36
ты тише, а то щас дмсол придет и тебе разложит по полочкам что скала не очень)

Google

Евгений
14.04.2017
14:16:07
Current session: Apr 10 — May 29.
фак

Митко Соловец?
14.04.2017
14:17:24

guga
14.04.2017
14:17:42
его же там можно в любой момент начать
и проверка там автоматическая

Митко Соловец?
14.04.2017
14:18:11
кто за сертификат платил?

guga
14.04.2017
14:18:14
может быть активность на фороме будет так себе

Митко Соловец?
14.04.2017
14:18:22
или все во фри режиме?

Евгений
14.04.2017
14:19:47
чтоб скалу знать, нужен сертификат?
скока стоит, я не шарю прост

Митко Соловец?
14.04.2017
14:20:25
да нет, его прост за прохождение курса можно получить

Kirill
14.04.2017
14:25:27
И не только мне

Valeriy
14.04.2017
14:27:09
Просто линкедин и твиттер маленькие проекты, не наш масштаб, поэтому у них скала работает, а так то, говно, конечно, не поддерживаемое
Разве что со спарком поиграться