Как работает метод java.util.stream.Stream.distinct()? Могу ли я переопределить методquals() для потоковых объектов?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как работает метод java.util.stream.Stream.distinct()? Могу ли я переопределить методquals() для потоковых объектов?

Сообщение Anonymous »

Мой вариант использования заключается в том, что я пытаюсь использовать отдельный метод Stream для удаления студентов с одинаковым номером списка из списка объектов класса StudentCourseMapping. >
Подробности POJO приведены ниже:

Код: Выделить всё

public class StudentCourseMapping implements Serializable{
private String name;
private String dept;
private Integer roll;
private String course;
Ниже приведен метод равенства:

Код: Выделить всё

    @Override
public boolean equals(Object obj) {
StudentCourseMapping other = (StudentCourseMapping) obj;
if (roll == null) {
if (other.roll != null)
return false;
} else if (!roll.equals(other.roll))
return false;
return true;
}
Ниже представлена ​​реализация:

Код: Выделить всё

public class RemoveDuplicateUsingStream {
public static void main(String[] args) {
List studentCourceList = JacksonJSONReaderObjectMapper.jsonReader();

studentCourceList.stream().distinct().forEach(System.out::println);
StudentCourseMapping s0 = studentCourceList.get(0);
StudentCourseMapping s1 = studentCourceList.get(1);
System.out.println(s0.equals(s1));

Set st = new HashSet();
ListstudentCourceList2 = studentCourceList.stream().filter(s -> st.add(s.getRoll()))
.collect(Collectors.toCollection(ArrayList::new));
System.out.println(studentCourceList2.size());
}
}
И результат:

Код: Выделить всё

StudentCourseMapping [name=Alu, dept=Physics, roll=12, course=Quantum Theory]
StudentCourseMapping [name=Alu, dept=Physics, roll=12, course=English]
StudentCourseMapping [name=Sam, dept=Commerce, roll=16, course=English]
StudentCourseMapping [name=Sam, dept=Commerce, roll=16, course=Accounts]
StudentCourseMapping [name=Joe, dept=Arts, roll=19, course=English]
StudentCourseMapping [name=Joe, dept=Arts, roll=19, course=Hindi]
true
3

Код: Выделить всё

JacksonJSONReaderObjectMapper.jsonReader()
— это специальный метод, который считывает приведенный ниже JSON. Я могу добиться того же, используя фильтр и добавляя в HashSet, но мне действительно хочется знать, что не так с моей конкретной реализацией.

Код: Выделить всё

{
"studentCourseMapping": [
{
"name": "Alu",
"dept": "Physics",
"roll": 12,
"course": "Quantum Theory"
},
{
"name": "Alu",
"dept": "Physics",
"roll": 12,
"course": "English"
},
{
"name": "Sam",
"dept": "Commerce",
"roll": 16,
"course": "English"
},
{
"name": "Sam",
"dept": "Commerce",
"roll": 16,
"course": "Accounts"
},
{
"name": "Joe",
"dept": "Arts",
"roll": 19,
"course": "English"
},
{
"name": "Joe",
"dept": "Arts",
"roll": 19,
"course": "Hindi"
}
]
}
Когда я пытался напрямую протестировать метод равенства, он работал правильно и возвращал true, поскольку и s0, и s1 имели значение 12.

Код: Выделить всё

        StudentCourseMapping s0 = studentCourceList.get(0);
StudentCourseMapping s1 = studentCourceList.get(1);
System.out.println(s0.equals(s1));
Но когда я использую различные, все объекты печатаются, а также при попытке отладки в Eclipse отдельный метод, который я написал, не вызывается, но в документации об этом говорится следует позвонить. Я использую JDK 11:

Код: Выделить всё

Stream distinct()
Возвращает поток, состоящий из отдельных элементов (в соответствии с Object.equals(Object)) этого потока.
< /blockquote>

Подробнее здесь: https://stackoverflow.com/questions/721 ... e-the-equa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Класс java.util.ArrayList не может быть приведен к классу java.util.UUID (исключение java.util.ArrayList и java.util.UUI
    Anonymous » » в форуме JAVA
    0 Ответы
    172 Просмотры
    Последнее сообщение Anonymous
  • Класс java.util.ArrayList не может быть приведен к классу java.util.UUID (исключение java.util.ArrayList и java.util.UUI
    Anonymous » » в форуме JAVA
    0 Ответы
    128 Просмотры
    Последнее сообщение Anonymous
  • Какова связь между структурой данных Stream (java.util.stream) и LinkedList в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Получение списка из java.util.stream.Stream в Java 8
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Получение списка из java.util.stream.stream в Java 8
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»