特定の値のテーブルのインデックスを取得するためのJavaの配列にネイティブメソッドがあるかどうかを知りたいですか?
私のテーブルにこれらの文字列が含まれているとしましょう:
public static final String[] TYPES = {
"Sedan",
"Compact",
"Roadster",
"Minivan",
"SUV",
"Convertible",
"Cargo",
"Others"
};
ユーザーが車のタイプを入力する必要があり、バックグラウンドでプログラムがその文字列を取得し、配列内の位置を取得するとします。
だから人が入った場合:セダンそれは位置0を取り、私のプログラムによって作成された車のオブジェクトに格納する必要があります...
String carName = // insert code here
int index = -1;
for (int i=0;i<TYPES.length;i++) {
if (TYPES[i].equals(carName)) {
index = i;
break;
}
}
この後index
は車の配列インデックス、または存在しない場合は-1です。
入力する:
Arrays.asList(TYPES).indexOf("Sedan");
すべての英語の単語の配列がありました。私の配列にはユニークなアイテムがあります。でも…
Arrays.asList(TYPES).indexOf(myString);
…常にindexOutOfBoundException
をくれました。
だから、私は試しました:
Arrays.asList(TYPES).lastIndexOf(myString);
そして、それは働いた。配列に同じアイテムが2回ない場合は、次を使用できます。
Arrays.asList(TYPES).lastIndexOf(myString);
for (int i = 0; i < Types.length; i++) {
if(TYPES[i].equals(userString)){
return i;
}
}
return -1;//not found
これもできます:
return Arrays.asList(Types).indexOf(userSTring);
代わりにこれを試してください
org.Apache.commons.lang.ArrayUtils.indexOf(array, value);
これを行うにはArrays
クラスを使用します
Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");
組み込みメソッドはありません。ただし、簡単に実装できます。
public static int getIndexOf(String[] strings, String item) {
for (int i = 0; i < strings.length; i++) {
if (item.equals(strings[i])) return i;
}
return -1;
}
Java配列にはネイティブのindexofメソッドはありません。このために独自のメソッドを記述する必要があります。
この機能を試してください:
public int indexOfArray(String input){
for(int i=0;i<TYPES,length();i++)
{
if(TYPES[i].equals(input))
{
return i ;
}
}
return -1 // if the text not found the function return -1
}
テスト可能なモック可能なインターフェイス
public interface IArrayUtility<T> {
int find(T[] list, T item);
}
実装
public class ArrayUtility<T> implements IArrayUtility<T> {
@Override
public int find(T[] array, T search) {
if(array == null || array.length == 0 || search == null) {
return -1;
}
int position = 0;
for(T item : array) {
if(item.equals(search)) {
return position;
} else {
++position;
}
}
return -1;
}
}
テスト
@Test
public void testArrayUtilityFindForExistentItemReturnsPosition() {
// Arrange
String search = "bus";
String[] array = {"car", search, "motorbike"};
// Act
int position = arrayUtility.find(array, search);
// Assert
Assert.assertEquals(position, 1);
}
最初はxを任意の数にしてメソッドとして使用します。コンソールによって渡される文字列yとvは検索する配列です!
public static int getIndex(int x, String y, String[]v){
for(int m = 0; m < v.length; m++){
if (v[m].equalsIgnoreCase(y)){
x = m;
}
}
return x;
}
簡単な方法は、配列内の項目をループで繰り返すことです。
for (var i = 0; i < arrayLength; i++) {
// (string) Compare the given string with myArray[i]
// if it matches store/save i and exit the loop.
}
間違いなくより良い方法がありますが、少数のアイテムの場合、これは非常に高速です。ところでこれはjavascriptですが、ほぼすべてのプログラミング言語で同じメソッドが機能するはずです。