2016-11-14 84 views
-2

我在BlueJ,SuperHero和SuperWeapon中有两个类。我需要创建一种在Arraylist中添加超级武器的方法。该方法应该使用SuperWeapon类型的参数来调用。如何检查数组列表中是否已经存在字符串值?

这意味着该方法假定超武器对象存在。该方法因此不应该实例化新的超级武器对象。

并且只有具有唯一名称的武器可以被添加到列表中,因此需要对新的SuperWeaponobject进行控制。

下面的代码是我目前所拥有的,据我所知,现在的代码并不检查超级武器的名称是否是唯一的。对不起,如果代码有点奇怪,我从瑞典语翻译它为英语,但我希望有人了解我需要什么。

代码:

import java.util.ArrayList; 

public class SuperHero 
{ 
    private ArrayList<SuperWeapon> superWeaponList; 
    private String superHeroName; 
    public SuperHero() 
    { 
     superHeroName = "Superman"; 
     superWeaponList = new ArrayList<SuperWeapon>(); 
    } 
    public void addSuperWeapon(SuperWeapon superWeapon) 
    { 
     if(superWeaponList.contains(superWeapon)) 
     { 
      System.out.println("The Superhero already has a superweapon with the name: " + superWeapon.getName() + "."); 
     } 
     else 
     { 
      superWeaponList.add(superWeapon); 
      System.out.println("A new superweapon has been registred for the superhero"); 
     } 
    } 
} 
+2

您没有字符串列表作为您的标题暗示。你必须在你的''SuperWeapon''类中实现''equals''来使''contains''工作。 – f1sh

回答

0

有两个选项来解决问题或者更改为HashMap<String, ArrayList<SuperWeapons>>其超级英雄的名字映射到他的武器或其他覆盖在超级英雄的类equals方法使得两个超级英雄的相等如果他们的名字是相同的而不是相同的对象,即内存位置

相关问题