如何搜索对象的ArrayList
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何搜索对象的ArrayList相关的知识,希望对你有一定的参考价值。
我正在创建一个Account
s(一个对象)的ArrayList,而Account
构造函数是
public Account(String name, int accNum, int balance)
{
myName = name;
myAccountNum = accNum;
myBalance = balance;
}
我想知道如何检查ArrayList以确定其中是否存在给定的accountNumber,如果存在,则return true
private static ArrayList<Account> accounts = new ArrayList<Account>();
我最初的想法是这个,但我认为这不起作用
if(accounts.contains(tempAccNum))
{
//executes code that I have
}
答案
我建议你通过为帐户类实现equals()
方法来简化它。
@Override
public boolean equals(Object o){
if(o==null)return false;
if(o.getClass()!=this.getClass())return false;
Account demo = (Account)o;
if(!demo.myName.equals(this.myName))return false;
if(demo.myAccountNum != this.myAccountNum)return false ;
if(demo.myBalance = this.myBalance)return false ;
}
然后使用contains方法
另一答案
首先在accNum
模型中为Account
添加getter
然后尝试这个
public boolean containsAcc(int accno) {
for(int i=0;i<accounts.size();i++) {
if(accounts!= null && accounts.get(i).getMyAccountNum()==acno) {
return true;
}
}
return false;
}
这里getMyAccountNum()
是在Account
模型中声明的吸气剂(如下所示)
然后检查一下
if(containsAcc(tempAccNum))
{
//your code
}
您的帐户模型应该是这样的
public class Account {
String myName;
int myAccountNum;
int myBalance;
public Account(String name, int accNum, int balance)
{
this.myName = name;
this.myAccountNum = accNum;
this.myBalance = balance;
}
public int getMyAccountNum() {
return myAccountNum;
}
}
另一答案
对于Java ArrayList,contains
执行对象相等比较。要使用.contains
,你需要
- 为Account类实现
.equals()
方法,并让它仅根据输入this.myAccountNum
的帐号检查Account
属性。 - 创建一个虚拟
Account
与所需的帐号,以传递到contains
。
更好的方法是评估迭代器,并检查每一步的帐号。在这里,我假设myAccountNum
是Account
类的公共财产。
Iterator<E> it = Accounts.iterator();
while (it.hasNext()) {
Account acc = it.next();
if(acc.myAccountNum == tempAccNum)
return true;
}
特别是对于ArrayList
,使用带有索引的.get
并不算太糟糕:
for(int index = 0; index < Accounts.size(); ++index) {
if(Accounts.get(index).myAccountNum == tempAccNum)
return true;
对于其他List
类型,使用指数可能非常差。
Ways to iterate over a list in Java
以上是关于如何搜索对象的ArrayList的主要内容,如果未能解决你的问题,请参考以下文章
java ArrayList 如何读取文件中的数据,并且搜索
如何使用 contains 在自定义对象 ArrayList 中搜索特定字符串?