正在比较List对象的元素



我有一个AccountInfo对象,它的电话号码是String类型。我需要比较列表中的每个电话号码,如果所有电话号码都相同,则返回true,如果其中任何一个不同,则返回false。

下面是代码片段,问题是即使电话号码不同,我也总是能得到真正的价值。我知道这是非常基本的,但任何帮助都将不胜感激。

import java.util.Objects;
public class AccountInfo {
String accountName;
String phoneNumber;
public AccountInfo( String accountName, String phoneNumber) {
this.accountName = accountName;
this.phoneNumber = phoneNumber;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AccountInfo that = (AccountInfo) o;
return Objects.equals(accountName, that.accountName) && Objects.equals(phoneNumber, that.phoneNumber);
}
@Override
public int hashCode() {
return Objects.hash(accountName, phoneNumber);
}
@Override
public String toString() {
return "AccountInfo{" +
"accountName='" + accountName + ''' +
", phoneNumber='" + phoneNumber + ''' +
'}';
}
}

这是我的主舱

import java.util.ArrayList;
import java.util.List;
public class TestMain {
public static void main(String[]args){
List<AccountInfo> accInfoList = new ArrayList<AccountInfo>();
List<AccountInfo> accountInfoList =populateList(accInfoList);
System.out.println(accountInfoList);
boolean flag = isSamePhoneNumber(accInfoList);
if(flag) {
System.out.println("All Phone numbers are same");
}
else{
System.out.println("Some of the phone numbers are different");
}
}
public static List<AccountInfo> populateList(List<AccountInfo> accountInfoList){
AccountInfo accountInfo1 = new AccountInfo("Rohit Sharma", "123456");
AccountInfo accountInfo2 = new AccountInfo("Mayank Singh", "123456");
AccountInfo accountInfo3 = new AccountInfo("Sam Singh", "12378456");
AccountInfo accountInfo4 = new AccountInfo("Rahul Sharma", "123456");
accountInfoList.add(accountInfo1);
accountInfoList.add(accountInfo2);
accountInfoList.add(accountInfo3);
accountInfoList.add(accountInfo4);
return accountInfoList;
}
public static boolean isSamePhoneNumber(List<AccountInfo> accountInfoList){
boolean isSamePhoneNumberFlag = false;
for (int i = 0; i < accountInfoList.size(); i++) {
for (int j = i+1; j < accountInfoList.size(); j++) {
// compare list.get(i) and list.get(j)
System.out.println("i "+accountInfoList.get(i).getPhoneNumber()+" "+"i+1 "+accountInfoList.get(i+1).getPhoneNumber());
if(accountInfoList.get(i).getPhoneNumber() == accountInfoList.get(i+1).getPhoneNumber()){
isSamePhoneNumberFlag = true;
}
}
}
return isSamePhoneNumberFlag;
}
}

输出:

[AccountInfo{accountName='Rohit Sharma', phoneNumber='123456'}, AccountInfo{accountName='Mayank Singh', phoneNumber='123456'}, AccountInfo{accountName='sam Singh', phoneNumber='12378456'}, AccountInfo{accountName='Rahul Sharma', phoneNumber='123456'}]
i 123456 i+1 123456
i 123456 i+1 123456
i 123456 i+1 123456
i 123456 i+1 12378456
i 123456 i+1 12378456
i 12378456 i+1 123456
All Phone numbers are same

尝试这样的操作,阅读return语句旁边的注释:

public static boolean isSamePhoneNumber(List<AccountInfo> accountInfoList) {
for (int i = 0; i < accountInfoList.size(); i++) {
for (int j = i + 1; j < accountInfoList.size(); j++) {
// compare list.get(i) and list.get(j)
System.out.println("i " + accountInfoList.get(i).getPhoneNumber() + " " + "i+1 " + accountInfoList.get(i + 1).getPhoneNumber());
if (accountInfoList.get(i).getPhoneNumber() != accountInfoList.get(i + 1).getPhoneNumber()) {
return false; // just this line tells you that numbers are different. So no need to check further.
}
}
}
return true;
}

最新更新