Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 19.09.2018
Сообщений: 59

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

26.02.2020, 12:32. Показов 1066. Ответов 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__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
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
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru