Java 比较ArrayList中的元素值
我试图在ArrayList“minions”中找到一个具有最高“evilLevel”(在另一个类中定义)的元素Java 比较ArrayList中的元素值,java,arrays,Java,Arrays,我试图在ArrayList“minions”中找到一个具有最高“evilLevel”(在另一个类中定义)的元素 public Minion(字符串名,int-level,boolean-onMission)-来自类Minion 私人设置的仆从; int-maxEvilLevel=0; 仆从最卑鄙的仆从; 公共仆从登记册(){ minions=newhashset(); } 公共仆从getMostEvilMinion(){ if(minions.isEmpty()){ 返回null; } 对于(仆
public Minion(字符串名,int-level,boolean-onMission)-来自类Minion
私人设置的仆从;
int-maxEvilLevel=0;
仆从最卑鄙的仆从;
公共仆从登记册(){
minions=newhashset();
}
公共仆从getMostEvilMinion(){
if(minions.isEmpty()){
返回null;
}
对于(仆从m:仆从){
if(m.GetEvilleLevel()>MaxEvilleLevel){
maxEvilLevel=m.getEvilLevel();
仆从最仆从=m;
}
}
归还最卑鄙的人;
}
不幸的是,该方法在此处返回“null”:
for(Minion m : minions){
if(m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
Minion theMostEvilMinion = m;
}
}
return theMostEvilMinion;
在for循环的中,您声明并设置一个局部变量themostVilminion
,该变量随后被遗忘,因为它是在该块中声明的
然后在循环之后,返回实例变量theMostEvilMinion
,这是一个在类顶部声明的不同变量
您需要声明并设置一个本地theMostEvilMinion
变量,然后返回它
Minion theMostEvilMinion = null;
int maxEvilLevel = 0;
for (Minion m : minions) {
if (m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
theMostEvilMinion = m;
}
}
return theMostEvilMinion;
然后,您还可以删除mostevilminion
和maxEvilLevel
实例变量。此处:
for(Minion m : minions){
if(m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
Minion theMostEvilMinion = m;
}
}
return theMostEvilMinion;
在for
循环的中,您声明并设置一个局部变量themostVilminion
,该变量随后被遗忘,因为它是在该块中声明的
然后在循环之后,返回实例变量theMostEvilMinion
,这是一个在类顶部声明的不同变量
您需要声明并设置一个本地theMostEvilMinion
变量,然后返回它
Minion theMostEvilMinion = null;
int maxEvilLevel = 0;
for (Minion m : minions) {
if (m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
theMostEvilMinion = m;
}
}
return theMostEvilMinion;
然后您还可以删除mostVilminion
和maxEvilLevel
实例变量。此代码不会编译。请环顾四周,通读这本书。特别是您说的是ArrayList
,但您的代码使用的是HashSet
。它们不是同一件事。哦,对了,最初我想我使用的是ArrayList,但后来切换到HashSet,同时有点迷路。这段代码不会编译。请环顾四周,通读这本书。特别是您说的是ArrayList
,但您的代码使用的是HashSet
。它们不是同一件事。哦,对了,最初我想我使用的是ArrayList,但后来切换到HashSet,同时稍微迷路了。