Мне нужно сделать регистрацию на spring

Мне нужно сделать регистрацию для БД на spring. Данные пользователей будут храниться в оперативной памяти. Я хочу сделать так, чтобы пользователь не мог зарегистрироватся под cуществующим логином, но у меня это не получается.Несмотря на if пользователь может зарегистрироватся под существующим логином.

 private ArrayList<account> accounts = new ArrayList<>();

@Override
public String toString() {
    String s = "";
    for(int i = 0;i<accounts.size();i++){
        s+=accounts.get(i).getLogin()+'\n';
    }
    return s;
}

public account register(String name, String pass){
    int isin = 0;
    for(int i = 0;i<accounts.size();i++){
        if(accounts.get(i).getLogin() == name ){
            isin = 1;break;
        }
    }
    if(isin==1){return null;}
    else{
        account t = new account(name,pass);
        accounts.add(t);
        return t;
    }
}

Вот код, который это делает

public class MyController {

private MemAccountService accountService;
private account myAccount;
public MyController(MemAccountService accountService) {
    this.accountService = accountService;
    this.myAccount = null;
}

@RequestMapping("/")
public String main(){
    return "redirect:index.html";
}

@RequestMapping("/register")
@ResponseBody
public String register(@RequestParam("name") String name,@RequestParam("password") String password){
    myAccount =  accountService.register(name,password);
    if (myAccount == null) {
        return "error";
    }
    else return  "ok";
}

Ответы (1 шт):

Автор решения: jilvik

Не работает по причине неправильного сравнения строк. В примере

if(accounts.get(i).getLogin() == name )

Вы сравниваете ссылки. Вам необходимо сравнить значения путем вызова метода equals

if(accounts.get(i).getLogin().equals(name))

Немного подробнее описано тут: https://yandex.ru/turbo/s/internet-technologies.ru/articles/sravnenie-strok-v-java.html

→ Ссылка