【问题标题】:Java - find position of a string in a List of storage objectJava - 在存储对象列表中查找字符串的位置
【发布时间】:2011-11-29 05:41:18
【问题描述】:

我猜这个问题的标题说明了一切,或者什么也没说明...... 经过几个小时的谷歌搜索、尝试和重新发明 Java,我决定问你。

我有这个存储类:

class AppInfo implements Comparable<AppInfo > {
        private String appname = "";
        private String pname = "";
        private String versionName = "";
        //private int versionCode = 0;
        private Drawable icon;
        private String appdir = "";
        private String appSize = "";

        @Override
        public int compareTo(AppInfo other) {
            int compareAppsName = appname.compareToIgnoreCase(other.appname);

            return compareAppsName;
        }

    }

我做我该做的事,最终我得到一个充满对象的列表。 一切正常,ListView 填充了正确的数据...

现在我想搜索一个字符串(某个 pname)并查看它是否存在于列表中,如果存在,它在列表中的位置(它的索引)。

尝试仅使用我需要的数据创建另一个列表.. 尝试了列表、HashMaps、LinkedHashMap、二维数组/arrayList...没有成功... 还尝试迭代列表,但无法弄清楚如何处理我得到的元素。

希望我能说得通,这甚至是可能的。

披露:请多多包涵,我是 Java 新手。

【问题讨论】:

  • “请跟我裸露” - 不,谢谢 :-)
  • @Stephen C LOL 对此感到抱歉。诚实的错误,不是邀请;)

标签: java android arraylist hashmap linkedhashmap


【解决方案1】:

如果您只想检查 pname 字符串,您可以在 AppInfo 类中添加一个 getter 方法,例如

  public String getPname(){
    return pname ;
  }

然后,当您遍历列表时,您可以调用 .getPname 来提取列表中给定位置的字符串。

【讨论】:

  • 谢谢,但我没有给定的位置......位置(索引)是我正在寻找的......(如果我拥有的 pname 确实存在于 List
  • 好的,getter 方法将帮助您识别它是否存在于列表中。您需要自己遍历列表并检查每个条目。您将从迭代器变量中获取位置。
  • 谢谢,+1 您对正确方向和善意的回答 :)
【解决方案2】:

我不完全确定我是否理解您的问题,但如果您想查找具有给定 pname 值的列表元素的索引,您可以执行以下操作:

List<Integer> indices = new ArrayList<Integer>();
for (int i = 0; i < list.size(); i++) {
    String panme = list.get(i).getPname();
    if (pname != null && pname.equals(expectedPname));
        indices.add(i);
    }
}

我刚刚重读了您的问题,听起来您只希望索引显示一次。对困惑感到抱歉。为此,您可以使用相同的想法而无需额外的列表:

int matchingIndex = -1;
for (int i = 0; i < list.size(); i++) {
    String pname = list.get(i).getPname();
    if (pname != null && pname.equals(expectedPname));
        matchingIndex = i;
        break;
    }
}

【讨论】:

  • 在我看到更新之前就被接受了...太好了!谢谢你:)
  • 没问题;我很高兴这有帮助。
猜你喜欢
  • 2014-11-03
  • 1970-01-01
  • 2016-12-17
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多