/ / намиране на елемент - java, низ, сравнение

намиране на елемент - java, string, сравнение

Имам този метод:

public User findById(String name)
{
for (User u : list)
{
if (u.getFirstName() == name)
{
return u;
}
}
return null; // or empty User
}

Как мога да програмирам метод в моя клас прозорец, така че да мога да разпечатам потребителя, когото намерих?

Това е, което имам. (Мисля, че съм далеч)

public void findCustomer()
{
String firstname = findCustomerField.getText();

if(!firstname.equals(""))
{
String result = list.findById(firstname);
outputText.setText(result);

}

}

Отговори:

1 за отговор № 1

Не използвайте == в вашето сравнение

if (u.getFirstName() == name)

но equal

if (u.getFirstName().equal(name))

Операторът == тестове, за да видите дали две обектни референтни променливи се отнасят до точно същия екземпляр на обект.

Методът .equals() тестове, за да се види дали двата обекта, които се сравняват, са еквивалентни

Трябва да промените също така своя метод findCustomer като този

public void findCustomer()
{
String firstname = findCustomerField.getText();

if(!"".equal(firstname))
{
User user = list.findById(firstname);
if(user != null)
{
outputText.setText(user.getFirstName());
}
}
}

0 за отговор № 2

употреба String.equals() за стойност проверка за равенство.

Променете това на:

if (u.getFirstName().equals(name)) {

Най- == по същество прави проверка за равнопоставеност на референтните обекти.


0 за отговор № 3
String result = list.findById(firstname);

Вашият findById връща потребител, така че го променете на:

User result = list.findById(firstname);

Следователно променете следващия си ред на:

outputText.setText(result.getFirstName());