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 文字列を確認したいだけの場合は、getter メソッドを AppInfo クラスに追加できます。

  public String getPname(){
    return pname ;
  }

次に、リストを反復処理するときに .getPname を呼び出して、リスト内の指定された位置にある文字列を抽出できます。

メートル

于 2011-10-01T23:58:02.993 に答える