我想知道是否有一个Java数组中的本机方法来获取给定值的表索引?
我们说我的桌子包含这些字符串:
public static final String[] TYPES = {
"Sedan",
"Compact",
"Roadster",
"Minivan",
"SUV",
"Convertible",
"Cargo",
"Others"
};
让我们说用户必须输入汽车的类型,然后在后台程序获取该字符串并获取它在阵列中的位置。
所以,如果这个人进入:轿车 它应该取0位置并将其存储在我的程序创建的汽车对象中......
答案 0 :(得分:142)
输入:
Arrays.asList(TYPES).indexOf("Sedan");
答案 1 :(得分:26)
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。
答案 2 :(得分:9)
我有一系列所有英文单词。我的阵列有独特的物品。但是使用......
Arrays.asList(TYPES).indexOf(myString);
...总是给我indexOutOfBoundException
。
所以,我试过了:
Arrays.asList(TYPES).lastIndexOf(myString);
而且,它有效。如果您的阵列没有两次相同的项目,您可以使用:
Arrays.asList(TYPES).lastIndexOf(myString);
答案 3 :(得分:8)
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);
答案 4 :(得分:6)
使用Arrays
类来执行此操作
Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");
答案 5 :(得分:3)
没有内置方法。但你可以轻松实现一个:
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;
}
答案 6 :(得分:2)
java数组中没有本机indexof方法。您需要为此编写自己的方法。
答案 7 :(得分:1)
尝试此功能:
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
}
答案 8 :(得分:0)
一种简单的方法是循环遍历数组中的项。
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,但是同样的方法应该适用于几乎所有的编程语言。
答案 9 :(得分:0)
可测试的可模拟交互
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);
}
答案 10 :(得分:0)
将此作为一种方法,x最初是任何数字。 由控制台传入的字符串y和v是要搜索的数组!
<div id="app">
{{ message }}
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
</script>
答案 11 :(得分:0)
重构上述方法并与用法一起显示:
private String[] languages = {"pt", "en", "es"};
private Integer indexOf(String[] arr, String str){
for (int i = 0; i < arr.length; i++)
if(arr[i].equals(str)) return i;
return -1;
}
indexOf(languages, "en")