Java中的新功能(地图和集)

时间:2010-12-02 07:21:50

标签: java

任何可以帮助我并检查我的答案

(a)声明一个名为HouseMap的私有实例变量(Attribute),它应该包含一个带有整数键和字符串值的未排序映射。

Private Map< Integer, String> HouseMap = new HashMap<Integer, String>();

(b)编写HouseCatalogue的零参数构造函数,将HouseMap初始化为空映射。

houseMap = new HashMap<Integer, String>();

(c)为HouseCatalogue类编写一个名为addHouse()的实例方法,该方法不带参数,并且不返回任何值。这个方法应该只需输入上面显示的四个条目到HouseMap中。

Public void addHouse()
{
    HouseMap.put(101," adison Sas") ;
    HouseMap.put(103," FourSeasons") ;
    HouseMap.put(105," Hayat Regency "); 
    HouseMap.put(107," Concord al-Salam ") ;
}       

(d)为HouseCatalogue类编写一个名为printHouse()的实例方法,该类接受一个整数参数,并返回一个字符串值。此方法应打印等于整数参数的区号的值(House name)并返回它。否则它将返回null。

Public string printHouse( int area)
{
    for(Integer eachcode : HouseMap.keySet()) 
    { 
        if ( HouseMap.keySet()== area)
        {
            System.out.println("House name is"+ HouseMap.get(eachcode));
        }
    }
}

public static void printHouse( int area)
{ 
    for(Map.Entry<Integer,String> entry : houseMap.entrySet()) 
    {
        if (entry.getKey().equals(area)) 
        {
            System.out.println("House name is"+ entry.getValue());   
            //return entry.getValue();  //  return it      
        }   
    }
}

6 个答案:

答案 0 :(得分:3)

(a)声明时需要privatenew HashMap()的小写字母。通常在使用java对话时,在声明变量(houseMap)时使用camelcase但是没关系。

private Map<Integer, String> HouseMap;

(b)您已使用HouseMap而不是houseMap声明了您的变量(请参阅(a)camelcase),因此初始化它需要相同的变量:

HouseMap = new HashMap<Integer, String>();

(c)似乎很好

(d)嗯,看不到方法中的要点,它应该打印值返回它..好吧..先关闭{{ 1}}小写字母,public带有一个大字母(类的名称,然后是实现:

String

答案 1 :(得分:1)

  • a)只声明变量 - 不要初始化它
  • b)好的
  • c)好的
  • d)在地图中您可以随机访问。看看Map#get(Integer)API。你不需要遍历条目集

答案 2 :(得分:1)

由于地图的键是唯一的,您可以按如下方式简化最后一个方法:

public static void printHouse( int area)
{
    String name = houseMap.get(area); // May return null
    System.out.println("House name is " + name);
    return name;
}

答案 3 :(得分:1)

  • publicprivate必须以小写p形式写入。

  • 您应该显示整个构造函数,而不仅仅是其中的代码。

  • 修复缩进。对每个级别使用相同数量的缩进,并确保所有内容都整齐排列。

  • 当您使用类似for (Integer eachcode: HouseMap.keySet())的foreach循环时,迭代变量为eachcode。这是您应该与area进行比较的值,因为这是整数的值。您不希望将提供的所有区域代码作为一个单元进行比较(这些区域代码不是同一类型);你想依次将它与每个区号进行比较。

  • 但你根本不想写那个循环。 HashMap的目的是让你在给定密钥的情况下查找值。这就是.get()的作用。您拥有密钥:它是area。所以你需要做的就是查找它:System.out.println("House name is " + HouseMap.get(area))

  • 您还需要返回您查找的名称,而不仅仅是打印它,并且您需要在打印前检查名称是否存在(使用.contains())。

  • 看起来有人评论你的代码说“你也忘了归还”。您是否尝试与此人交谈或阅读评论?

答案 4 :(得分:0)

只是暗示最后一个:

  

(d)编写一个名为

实例方法

实例方法不是静态方法,您必须在第二个(d)方法中删除static关键字...

答案 5 :(得分:0)

非常感谢每个人

  

public static String printHouse(int   代码){

if (houseMap.containsKey(code)) 
{ 
    String name = houseMap.get(coe); 
    System.out.println(code+  " : " + name); 
    return name; 
}   else{
  System.out.println("null"); 
return null; }