关于Java集合类型Map的使用经验

Service写了个方法:
	public Map getAlbumNamesByOwnerID(Integer ownerID)
	{
		Map albumNamesMap=new HashMap();
		
		List result=albumDAO.findByAlbumOwnerId((ownerID));
		
		for(Iterator it=result.iterator();it.hasNext();)
		{
			CFIS_Album album=(CFIS_Album)it.next();
			albumNamesMap.put(album.getAlbumName(),album.getAlbumId());
		}
		return albumNamesMap;
	}


Action的方法:
		Iterator it =albumService.getAlbumNamesByOwnerID(ownerID).entrySet().iterator();
/*
奇怪的是,下面这句需要强制转换,但得到的Map类型却上面.entrySet()的方法,要像上面那样直接用.entrySet()方法又可以;而且得到的这个map对象不可以直接返回到jsp页面使用,必须用迭代器把Map重新取出来再放到一个Map才可以使用,可能是前面没指定泛型的原因
Map albumNamesMap=(Map)albumService.getAlbumNamesByOwnerID(ownerID);
*/
		
		System.out.println("Map~~~~~~~~~~~~~~~~~~~~");
		Map albumNamesMap=new HashMap();
		while(it.hasNext())
		{
			Entry entry = (Entry)it.next() ; 
			albumNamesMap.put(entry.getKey(),entry.getValue());
		}
request.setAttribute("albumNamesMap", albumNamesMap);



这样JSP页面就可以直接使用这个对象了,key是固有属性
			选择相册:<html:select property="albumID" size="1">
			<logic:iterate id="albumName" name="albumNamesMap">
			<html:option value="1"><bean:write name="albumName" property="key" /></html:option>
			</logic:iterate>
			</html:select>



==================================================================

后来Q群的711教me使用泛型,就不用强制类型转换了,并可以直接返回map对象,在此thanks again

	public Map getAlbumNamesByOwnerID(Integer ownerID)
	{
		Map albumNamesMap=new HashMap();
		
		List<CFIS_Album> result=albumDAO.findByAlbumOwnerId((ownerID));
		for(CFIS_Album b: result)
		{
			albumNamesMap.put(b.getAlbumName(), b.getAlbumId());
		}
		return albumNamesMap;
	}


Action里直接就可以把Map对象返回,不用强制类型转换
		Map albumNamesMap=albumService.getAlbumNamesByOwnerID(ownerID);
		request.setAttribute("albumNamesMap", albumNamesMap);

你可能感兴趣的:(java,jsp)