1、ArrayList indexOf() 方法
IndexOf(Object obj) メソッドは、動的配列内の要素のインデックス値を返します。
戻り値は次のとおりです。
配列内で最初に出現する obj 要素のインデックス値を返します。インデックスの添字は 0 から始まります。
指定された要素が動的配列に存在しない場合、indexOf() メソッドは -1 を返します。
ArrayList<String> aa = new ArrayList<>();
aa.add("上海");
aa.add("北京");
aa.add("a");
aa.add("p");
aa.add("p");
System.out.println(aa); // [上海, 北京, a, p, p]
int b = aa.indexOf("app");
int e = aa.indexOf("海");
int f = aa.indexOf("北京");
int h = aa.indexOf("p");
System.out.println(b);//结果为 -1 因为不存在 app 的值
System.out.println(e);//结果为 -1 因为不存在 海 的值
System.out.println(f);//结果为 1 北京出现的位置索引下标为1
System.out.println(h);//结果为 3 p第一次出现的位置索引下标为3
2、String indexOf(String str) 方法
IndexOf(String str) メソッドは、文字列内で最初に出現した指定された文字列値を返します。インデックスの添え字は 0 から始まります。
一致する文字列が見つからない場合は -1 を返します。
String a = "A,B2,CDF,D,F";
int c = a.indexOf("B");
int g = a.indexOf("D");
int j = a.indexOf("F");
int k = a.indexOf("上");
int u = a.indexOf("D",7);
System.out.println(c);//结果为:2 B出现的位置索引下标为2
System.out.println(g);//结果为:6 D出现的位置索引下标为6
System.out.println(j);//结果为:7 F出现的位置索引下标为7
System.out.println(k);//结果为:-1 上 未出现返回-1
System.out.println(u);//结果为:9 在第7个位置开始查找字符 "D" 第一次出现的位置,所以是9
3、string .indexOf( String str,int fromIndex ) メソッド
str: 取得する文字列値
fromIndex:検索を開始する文字列内の位置を指定します。
String a = "A,B2,CDF,D,F";
int u = a.indexOf("D",7);
System.out.println(u);//结果为:9 在第7个位置开始查找字符 "D" 第一次出现的位置,所以是9
4. 両者の違い
ArrayList:indexOf(Object obj) メソッドは、動的配列内の最初に出現した要素のインデックス値を返します。
String:indexOf(String str) メソッドは、文字列内で指定された文字列値が最初に出現する位置を返します。
5. 最も誤解を招きやすい場所は
たとえば、上記の例:
文字列 string に, (カンマ) があり、これもインデックスの添え字としてカウントされます。
そして ArrayList: return [Shanghai,Beijing,a,p,p] このうち、 (カンマ)は添字としてカウントされず、配列の値に応じて添字をチェックするためのもので、
クエリ int b = aa.indexOf("app") は配列内の [a,p,p] ではありません
配列に[上海、北京、a、p、p、app]がある場合、5を返します。
6. 拡張機能: ArrayList lastIndexOf() メソッドおよび String lastIndexOf() メソッド
ArrayList: lastIndexOf(Object obj) メソッドは、動的配列内の要素のインデックス値の最後の位置を返します。
String: lastIndexOf(String str) メソッドは、文字列内で指定された文字列値が最後に出現した位置を返します。