Java 获取数组中对象的索引
我试图找到数组中每个对象的索引Java 获取数组中对象的索引,java,arrays,indexof,Java,Arrays,Indexof,我试图找到数组中每个对象的索引 public class MonsterTest { public static void main(String[] args) { // TODO Auto-generated method stub Monster [] ma = new Monster[3]; ma[0] = new Vampire(); ma[1] = new Dragon(); ma[2]
public class MonsterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Monster [] ma = new Monster[3];
ma[0] = new Vampire();
ma[1] = new Dragon();
ma[2] = new Monster();
for(int x = 0; x < 3; x++) {
System.out.println(ma[x].getClass());
System.out.println(java.util.Arrays.asList(ma[x]).indexOf(x));
ma[x].frighten(x);
}
}
}
公共类测试{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
怪物[]ma=新怪物[3];
ma[0]=新吸血鬼();
马[1]=新龙();
ma[2]=新怪物();
对于(int x=0;x<3;x++){
System.out.println(ma[x].getClass());
System.out.println(java.util.array.asList(ma[x]).indexOf(x));
ma[x].恐吓(x);
}
}
}
我在这里使用的
java.util.Arrays.asList(ARRAY.indexOf(element)
方法正确吗?(我显然不是因为输出不正确。让我们看看您的代码的功能:
java.util.Arrays.asList(ma[x])
创建一个列表,其中正好包含1个元素:ma[x]
也许您正在尝试这样做,以创建数组ma
中所有Monster
的列表:
java.util.Arrays.asList(ma)
这将尝试在列表中找到一个
整数
。(循环变量的自动装箱)。这显然会返回-1
,因为列表中没有整数
s(只有怪物
s)
要获得结果!=-1,您必须将怪物
作为参数传递给indexOf
,例如:
/*...*/.indexOf(ma[x])
(如果您使用我上面的两个修改,并且没有一个怪物是相等的(使用
equals
),并且equals
是自反的,如果您不覆盖它,它将返回x
)你已经拥有了它-它是x
。你不需要使用这样一个特定的函数来获得你已经拥有的东西
public class MonsterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Monster [] ma = new Monster[3];
ma[0] = new Vampire();
ma[1] = new Dragon();
ma[2] = new Monster();
for(int x = 0; x < 3; x++) {
System.out.println(ma[x].getClass());
System.out.println(x);
ma[x].frighten(x);
}
}
}
公共类测试{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
怪物[]ma=新怪物[3];
ma[0]=新吸血鬼();
马[1]=新龙();
ma[2]=新怪物();
对于(int x=0;x<3;x++){
System.out.println(ma[x].getClass());
系统输出println(x);
ma[x].恐吓(x);
}
}
}
问题在于:
System.out.println(java.util.Arrays.asList(ma[x]).indexOf(x));
您正在指定一个索引,不应在asList方法的参数中使用该索引。请尝试以下操作:
System.out.println(java.util.Arrays.asList(ma).indexOf(x));
Arrays.asList(…)
做了什么?indexOf(…)做了什么?(去看)。这会产生相同的输出。是的,因为您正确地将列表作为参数ma
,但要查找Integer类型而不是Monster类型的对象的索引。如果您想依赖这种方法,请使用System.out.println(java.util.Arrays.asList(ma.indexOf(ma[x]);
System.out.println(java.util.Arrays.asList(ma).indexOf(x));