【问题标题】:Remove items from object arraylist using String array - android [duplicate]使用字符串数组从对象数组列表中删除项目 - android [重复]
【发布时间】:2019-04-15 06:34:20
【问题描述】:

我有一个自定义的 ArrayList 和 String 数组。我想要的是删除 ArrayList 中与 String 数组的值匹配的行。

我的数组列表.....

ArrayList<SqlFavHeaderData> hList = db.getAllHeaderDetails();

SqlFavHeaderData

private String mId;
private String mType;
private double mPrice;
private String mBeds;

字符串数组....

String[] ss = new String[i];

这具有与 ArrayList 中的 mId 匹配的值。

我想要的是从 ArrayList 中删除与 mId 比较的项目,这些项目与字符串数组中的值匹配。

我试过这样。但没有运气......

   for (int i = 0; i < 10; i++) {
        hList.remove(ss[i]); 
    }

【问题讨论】:

  • 如果你想使用这样的收集方法,你需要为你的类实现一个有意义的equals() 版本。除此之外:了解 java 命名约定。匈牙利的概念mSomething 在java 中不是推荐的做法。并首先使用有意义的名称。 ss肯定不是。
  • 试试这个ArrayList&lt;String&gt; hList = = db.getAllHeaderDetails(); String[] ss = new String[i]; for (int i = 0; i &lt; hList.size(); i++) { if (hList.get(i).equalsIgnoreCase(ss[i])){ hList.remove(ss[i]); } }

标签: java android arrays arraylist


【解决方案1】:

试试这个它将删除所有具有类似于您的字符串数组的 mID 的项目。

    for (int i=0; i< hList.size(); i++) {
        for (String mID: ss) {
            if (hList.get(i).getmId().equals(mID)) {
                hList.get(i).remove(i);
            }
        }
    }

如果您使用的是 java8,那么您可以使用:

      for(String mid:ss) {
            hList.removeIf(sqldata->sqldata.getmId().equals(mid));
        }

【讨论】:

  • 使用 hList.get(i).getmId().equals(mID) 代替 hList.get(i).getmId() == mID。 == 正在检查引用相等性。 remove 也可以是带有迭代器的崩溃删除项。
  • Thankz.. 在 remove(i) 之前还有额外的 get(i)
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
相关资源
最近更新 更多