1

我想这个问题的标题说明了一切,或者什么也没说......经过几个小时的谷歌搜索、尝试和重新发明 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)并查看它是否存在于列表中,如果存在,它在列表中的位置(它的索引)。

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

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

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

4

2 回答 2

5

我不完全确定我是否理解您的问题,但如果您想查找具有给定 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;
    }
}
于 2011-10-02T00:01:52.833 回答
2

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

  public String getPname(){
    return pname ;
  }

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

于 2011-10-01T23:58:02.993 回答