1 / 1 / 1
Регистрация: 19.09.2018
Сообщений: 59

Как переопределить equals

26.02.2020, 12:32. Показов 1039. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем привет. Кто знает как переопределить equals в этой ситуации?

Есть ArrayList и класс Edge:
Java
1
private final List<Edge> edgeList = new ArrayList<>();
Java
1
2
3
4
5
6
7
8
9
10
public class Edge {
    protected final Vertex from;
    protected final Vertex to;
    protected final Integer weight;
 
    public Edge( Vertex from, Vertex to, Integer weight ) {
        this.from = from;
        this.to = to;
        this.weight = weight;
}
Заполняю этот ArrayList объектами класса Edge:
Java
1
edgeList.add( new Edge( new Vertex(vertexName1), new Vertex(vertexName2), wt ) );
Затем пытаюсь достать, а затем удалить из этого ArrayList-а нужный мне объект, значения 2-ух полей которого равны label1 и label2:
Java
1
2
3
4
5
6
7
8
Edge finded;
for (Edge test : edgeList) {
   if ( ( test.from.equals(label1) ) && ( test.to.equals(label2) ) ) {
      finded = test;
      edgeList.remove( finded );
      break;
    }
}
Проблема в том, что в условие никогда не заходит, проверял отладчиком. Видимо дело только в equals, больше вариантов нету. Как его нормально переопределить в классе Edge, чтобы условие цикла выполнялось?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2020, 12:32
Ответы с готовыми решениями:

Переопределить equals() и hashCode()
Помогите пожалуйста с equals() и hashCode(). Есть класс в котором хранится многоменый массив. equals() переопределила( не знаю если...

Как исправить ошибку equals
Выводит такую ошибку когда сравниваю matrix1d и matrix2d Matrix: Matrix: at matrix.Matrix1D.equals(Matrix1D.java:68) at...

Переопределение Equals. Как его можно переопределить?
Я в классе определил 2 оператора != и ==, теперь студия подсказывает, что у меня не переопределён метод Equals. Как можно переопределить...

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.02.2020, 13:13
Цитата Сообщение от XSasha Посмотреть сообщение
label1
это чо?
0
1 / 1 / 1
Регистрация: 19.09.2018
Сообщений: 59
26.02.2020, 14:56  [ТС]
xoraxax, в общем разобрался. label1 и label2 это строки. Я сравнивал их с объектами класса Vertex, отсюда и ошибка. Решил проблему, сделав Vertex v1 = new Vertex(label1) и Vertex v2 = new Vertex(label2). И сравнивал уже объекты одного типа, а не разных как раньше.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.02.2020, 15:45
а не проще из вертекса было строку достать?
1
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
27.02.2020, 14:26
XSasha, во, гля в кодоКладовки нашлось похожее
Кликните здесь для просмотра всего текста

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Random;
 
public class Helper {
 
 
    public static void main(String[] args) {
        List<Interval> intervals = getIntervalsList(new Random(System.currentTimeMillis()), 100, 11);
        // ищем отрезоки длинной > 60
        for (Interval tmpInter : intervals)
            if (tmpInter.getLength() > 60)
                System.out.println(tmpInter);
    }
 
    static List<Interval> getIntervalsList(Random rndGen, int border, int count) {
        List<Interval> intervalList = new ArrayList<>();
        while (count-- > 0)
            intervalList.add(new Interval(new Point(rndGen.nextInt(border), rndGen.nextInt(border)),
                    new Point(rndGen.nextInt(border), rndGen.nextInt(border))));
        return intervalList;
    }
 
}
 
class Interval {
    private Point begin;
    private Point end;
    private double length;
 
    Interval(Point begin, Point end) {
        this.begin = begin;
        this.end = end;
        this.length = getLengthInit();
    }
 
    double getLengthInit(){
        double disX = end.x - begin.x;
        double disY = end.y - begin.y;
        return Math.sqrt(disX*disX + disY*disY);
    }
 
    public double getLength() {
        return length;
    }
 
    public Point getBegin() {
        return begin;
    }
 
    public Point getEnd() {
        return end;
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Interval interval = (Interval) o;
        return  Objects.equals(begin, interval.begin) &&
                Objects.equals(end, interval.end);
    }
 
    @Override
    public int hashCode() {
        return Objects.hash(begin, end);
    }
 
    @Override
    public String toString() {
        return "Interval{" +
                "begin[" + begin.x  + "," + begin.y +
                "]; end[" + end.x + "," + end.y +
                "]; length=" + length +
                '}';
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2020, 14:26
Помогаю со студенческими работами здесь

Как сравнить 2 массива через Equals?
Помогите пожалуйста разобраться, как сравнить 2 массива class Arrays&lt;T&gt; { T array; public Arrays() { array =...

Как определить метод equals для своих обетов?
Если создал свой класс нужно перерисовать в нем этот метод или есть другие выходы?

Как переопределить событие?
Есть класс MyTabControl наследуюший от TabControl. Сам экземпляр класса создается на форме программным способом. Необходимо...

Как переопределить функцию?
Есть форма которая отправляется таким способом: onsubmit=&quot;return AMI.Form.Filter.submit(this);&quot; Как переопределить функцию Чтоб...

(Наследование) Как переопределить функцию?
Здравствуйте, уважаемые форумчане! Недавно столкнулся с одной проблемой в Java. Пусть есть класс: public class MyForm { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru