Как отфильтровать повторяющиеся значения, излучаемые наблюдаемыми в RXJava?

Благодаря я и. У меня есть лучшее решение, которое позволяет вам создать определенную таблицу календаря. Например, если я пытаюсь создать таблицу 2014-04, она выглядит так:

SELECT (CURDATE() - INTERVAL c.number DAY) AS DATE
FROM 
(
    SELECT singles + tens + hundreds number FROM 
    ( 
        SELECT 0 singles
        UNION ALL SELECT   1 UNION ALL SELECT   2 UNION ALL SELECT   3
        UNION ALL SELECT   4 UNION ALL SELECT   5 UNION ALL SELECT   6
        UNION ALL SELECT   7 UNION ALL SELECT   8 UNION ALL SELECT   9
    ) singles JOIN 
    (
        SELECT 0 tens
        UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
        UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
        UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
    ) tens  JOIN 
    (
        SELECT 0 hundreds
        UNION ALL SELECT  100 UNION ALL SELECT  200 UNION ALL SELECT  300
        UNION ALL SELECT  400 UNION ALL SELECT  500 UNION ALL SELECT  600
        UNION ALL SELECT  700 UNION ALL SELECT  800 UNION ALL SELECT  900
    ) hundreds
    ORDER BY number DESC
) c  
WHERE c.number BETWEEN 
DAYOFYEAR(NOW()) - DAYOFYEAR('2014-04-01')-  DAY(LAST_DAY('2014-04-01')) +1
AND 
DAYOFYEAR(NOW()) - DAYOFYEAR('2014-04-01')
16
задан Lester 29 August 2015 в 13:04
поделиться

1 ответ

Да, вы правы, что вам нужно иметь согласованные методы equals() и hashcode() для вашего объекта, чтобы иметь возможность использовать distinct(), потому что под прикрытием оператор distinct использует HashSet.

Версия distinct с Func1 позволяет вам преобразовать объект во что-то, что вы хотите отличить (но должны реализовать согласованные методы equals и hashcode).

Предположим, у меня есть Observable<Person>, где Person выглядит следующим образом:

class Person {
    String firstName;
    String lastName;
}

Затем, чтобы подсчитать количество различных имен, я могу сделать это:

persons.distinct(person -> person.firstName).count();
29
ответ дан Dave Moten 29 August 2015 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: