获取arraylist中项目的索引;

use*_*151 18 java element arraylist find indexof

我有一个名为的班级AuctionItem.该AuctionItem班有一个名为方法getName()返回一个String.如果我有一个ArrayList类型AuctionItem,那么返回ArrayList具有特定名称的项目索引的最佳方法是什么?

我知道有一个.indexOf()功能.该函数的参数是一个对象.要查找具有名称的项目,我应该只使用for循环,当找到该项目时,返回元素位置ArrayList

有没有更好的办法?

Koo*_*oki 17

我认为for循环应该是一个有效的解决方案:

    public int getIndexByname(String pName)
    {
        for(AuctionItem _item : *yourArray*)
        {
            if(_item.getName().equals(pName))
                return *yourarray*.indexOf(_item)
        }
        return -1;
    }
Run Code Online (Sandbox Code Playgroud)


Sur*_*tta 15

是的,你必须循环它

public int getIndex(String itemName)
{
    for (int i = 0; i < arraylist.size(); i++)
    {
        AuctionItem auction = arraylist.get(i);
        if (itemName.equals(auction.getname()))
        {
            return i;
        }
    } 

    return -1;
}
Run Code Online (Sandbox Code Playgroud)


har*_*rsh 7

基本上你需要ArrayList根据名称查找元素getName.解决这个问题的两种方法:

1,不要使用ArrayList,使用HashMap<String,AutionItem>其中String将名字

2- getName用于生成索引并使用基于索引的添加到数组列表中list.add(int index, E element).从名称生成索引的一种方法是使用其hashCode和ArrayList当前大小的模数(类似于内部使用的内容HashMap)


T.J*_*der 0

要查找具有名称的项目,我是否应该使用 for 循环,并在找到该项目时返回 ArrayList 中的元素位置?

是的循环(使用索引或 )Iterator。在返回值上,可以返回其索引,也可以返回项目本身,具体取决于您的需要。ArrayList没有indexOf(对象目标,比较器比较)`或类似的。现在 Java 正在获取 lambda 表达式(在 Java 8 中,~2014 年 3 月),我希望我们会看到 API 获取接受 lambda 之类的方法。