powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList.contains
5 сообщений из 5, страница 1 из 1
ArrayList.contains
    #38531107
R@mon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!
Есть список объектов. Хочу проверить есть ли в данном списке пользователь со значением определенного поля (code). Обращаю внимание на то, что для сравнения есть только строковое значение (str). Можно ли в моём случае использовать contains?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
package ru;

import java.util.ArrayList;

public class DemoClass {
  public static void main(String[] args) {
    ArrayList<User> list = new ArrayList<User>();
    list.add(0, new User(1, "DKB"));
    list.add(1, new User(2, "SPB"));
    String str="SPB";
    System.out.println(list.contains(str)); //false
  }
}
public class User {
  private int id;
  private String code;
  public User(int id, String code) {
    this.id=id;
    this.code=code;
  }
}
...
Рейтинг: 0 / 0
ArrayList.contains
    #38531135
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R@mon ,
1) Прочитайте JavaDoc к contains;
2) Пройдитесь в дебаггере по коду с момента вызова contains.
И вы сами сможете ответить на свой вопрос. Такие вопросы возникают не от сложности или непонимания, а в первую очередь от лени :-)
...
Рейтинг: 0 / 0
ArrayList.contains
    #38531171
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R@mon,
У вас список пользователей, очевидно, что в нем нет строк. Компилятор предупреждение должен выдать.
Используйте
Map<String, User> map = new HashMap<>();
Если очень нужен порядок, то LinkedHashMap
...
Рейтинг: 0 / 0
ArrayList.contains
    #38531222
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R@mon,

В объекте User нужно переопределить метод equals() :
Код: java
1.
2.
3.
4.
5.
6.
7.
@Override
public boolean equals(Object obj) {
	if (obj instanceof User) {
		return ((User)obj).getName().equals(name);
	}
	return super.equals(obj);
}

А в метод contains() передавать не строку, а объект User :
Код: java
1.
System.out.println(userList.contains(new User(0, "User1"))); // ID - в данном случае уже не важен

BlazkowiczИспользуйте
Map<String, User> map = new HashMap<>(); +100
...
Рейтинг: 0 / 0
ArrayList.contains
    #38531446
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R@mon
Код: java
1.
    System.out.println(list.contains(str)); //false 



В силу того, что

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public boolean contains(Object o) {
             return indexOf(o) >= 0;
         }
     
         public int indexOf(Object o) {
             if (o == null) {
                 for (int i = 0; i < size; i++)
                     if (elementData[i]==null)
                         return i;
             } else {
                 for (int i = 0; i < size; i++)
                     if (o.equals(elementData[i]))
                         return i;
             }
             return -1;
         }



А в String
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 public boolean  equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])
                        return false;
                }
                return true;
            }
        }
        return false;
    }



То contains сработает только если User будет потомком String.

Но делать так не надо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList.contains
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]