如何从包含字符串的Arraylist获取索引

时间:2016-10-05 07:05:08

标签: java android arraylist

以下是我的模特:

public class Products {

    String date = "", item = "";

    public Products () {

    }
    public Products (String date String item ) {
        this.date = date 
        this.item  = item ;
    }

    public String getdate() {
        return date 
    }

    public void setdate (String date) {
        this.date = date 
    }

    public String getitem () {
        return item 
    }

    public void setitem (String item) {
        this.item  = item 
    }
}

以下代码定义了Arralist:

  private ArrayList<TasksCharts> mArrayList;

我在ArrayList中有数据:

position 0 -> date - "2016-10-02" , item = "pens"
position 1 -> date - "2016-10-03" , item = "xyz"
position 2 -> date - "2016-10-03" , item = "fts"

现在我想要ArraList的位置,其中包含&#34;笔&#34; 。因此,我已经在下面编写了代码:

 if (containsSubString(mArrayList, "pens")) {
   int listIndex = getItemPos("pens");
  } 


private int getItemPos(String item) {
        return mArrayList.indexOf(item);
    }

当我这样做时,它会为项目-1提供pens索引。

我如何获得特定项目的索引?

4 个答案:

答案 0 :(得分:3)

包含TasksCharts的{​​{1}}对象是否等于包含pens的字符串对象?

除非你覆盖了equals方法,否则我会说“不”。

我建议你改用Map,否则你将不得不循环寻找一个包含pens的{​​{1}}对象

答案 1 :(得分:2)

您可以运行for循环来完成工作。

 private int getItempos(ArrayList<TasksCharts> mArrayList, String str)
{
  for(int i=0;i<mArrayList.size();i++)
  {
     if(mArrayList.get(i).item.indexOf(str)!=-1)
     {
         return i;
     }
  }
  return -1;
}

希望这有帮助!

答案 2 :(得分:2)

你应该这样做:

         private int getItemPos(String key ,  String item) {
            int i = 0;
            for (i=0; i<mArrayList.size(); i++)
            {
                if(mArrayList.get(i).get(key).equalsIgnoreCase(item))
                {
                    return i;
                }
            }
            return -1;
        }

并致电

  

int x = getItemPos(&#34; item&#34;,&#34; pen&#34;);

答案 3 :(得分:1)

我只是在同一个ArrayList中添加了产品,然后使用for循环来查找该产品的位置。

TextUtils.isDigitsOnly("gifg");

这将输出为

ArrayList<Products> mArrayList = new ArrayList<>();

Products products1 = new Products("2016-10-05", "Pens");
Products products2 = new Products("2016-10-04", "Pencil");
Products products3 = new Products("2016-10-03", "Book");
Products products4 = new Products("2016-10-02", "Dairy");


mArrayList.add(products1);
mArrayList.add(products2);
mArrayList.add(products3);
mArrayList.add(products4);

for (Products products : mArrayList) {
    if (products.getitem().equals("Pens")) {
        Log.d("Position", mArrayList.indexOf(products) + "");
    }

}