我试图在此数组中打印每个值索引的值。
Integer[] i = { 0, 2, 3, 4, 4 };
for (int each : i) {
System.out.print(Arrays.asList(i).indexOf(each) + " ");
}
现在,我希望它说0, 1, 2, 3, 4
,而不是0, 1, 2, 3, 3
。
我需要更改以获取每个特定索引,而不是每个值的“第一个匹配”?
答案 0 :(得分:1)
不确定您要使用代码完成什么,但是如果要打印数组的所有索引而不是值,则可以执行此操作
Integer[] i = {0,2,3,4,4};
for (int index = 0; index < i.length; index++)
{
System.out.print(index + " ");
}
答案 1 :(得分:0)
如果列表中有重复的值 - 您将在实现中返回第一个匹配值。要解决此问题 - 您可以创建一个复制数组,当复制中找到值时 - 将其替换为“null”。
下次重复的值将找不到第一个重复,并将返回下一个索引。
Integer[] i = {0,2,3,4,4};
Integer[] copy = new Integer[i.length];
System.arraycopy( i, 0, copy, 0, i.length );
for (int each : i) {
int index = Arrays.asList(copy).indexOf(each);
System.out.print(index + " ");
copy[index] = null;
}
输出:0 1 2 3 4
现在你可以重新排序初始数组,它仍然会返回正确的索引。
答案 2 :(得分:0)
如果您想在数组中获取特定项目的Index
,您可以执行以下操作:
public static void main(String[] args){
// Create example Arrays
Integer[] arrayOfIntegers = {1,2,3,4,5};
String[] arrayOfStrings = {"A", "B", "C", "D",};
/******Test*******/
// what is the index of Integer 2 in the arrayOfIntegers
System.out.println(getIndex(arrayOfIntegers, 2));
// what is the index of String "C" in the arrayOfStrings
System.out.println(getIndex(arrayOfStrings, "C"));
// what is the index of String "X" in the arrayOfIStrings
// which doesn't exist (expected value is -1)
System.out.println(getIndex(arrayOfStrings, "X"));
}
/**
* This method to return the index of a given Object in
* the array. It returns - 1 if doesn't exist
* @param array
* @param obj
*/
public static int getIndex(Object[] array, Object obj){
for(int i=0; i<array.length; i++){
if(obj.equals(array[i])){
return i;
}
}
return -1;
}
<强>输出强>
1
2
-1
此外,如果您要为数组中的 重复 项目返回 所有 指数,可以做这样的事情:
/**
* This method returns all indices of a given Object
* in an ArrayList (which will be empty if did not found any)
* @param array
* @param obj
*/
public static ArrayList<Integer> getIndices(Object[] array, Object obj){
ArrayList<Integer> indices = new ArrayList<Integer>();
for(int i=0; i<array.length; i++){
if(obj.equals(array[i])){
indices.add(i);
}
}
return indices;
}
<强>测试强>
// Create example Array with duplicates
String[] arrayHasDuplicates = {"A", "B", "C", "D", "B", "Y", "B"};
System.out.println(getIndices(arrayHasDuplicates, "B"));
Output:
[1, 4, 6]