0

我将列表定义为 -List iAmAListWithNoGenricType;

字符串存储在列表中。

我将此列表传递给一个方法

 paramMap = populateMap(list,paramMap);
 public Map<Object,Object> populateMap(List list,Map<Object,Object> paramMap){
 paramMap.put("key",list);
 return paramMap;

现在,在执行此操作时,哈希码将存储在 Map 中。

关键={#code,#code......}

我试过这些:-

List<String> newList = new ArrayList<String>();
 for(String item:list){
     newList.add(item);
 }

并且还尝试将对象转换为字符串,但一切都失败了。用户迭代器也像这样:-

 Object element=itr.hasNext();
 newList.add((String)element);

还,

newList.add(item.toString());

但是系统崩溃了。

出路是什么?

4

4 回答 4

1

首先,你还没有初始化你的列表。其次,您应该提供您得到的异常,而不是发布“系统崩溃”。

在这里,您有元素,它的类型Boolean为 ,itr.hasNext()根据列表中是否存在任何下一个元素返回 true 或 false。然后,您已将其用于 sysout,您可以在其中获取classcastexception. 因为你不能将布尔值转换为字符串。!

所以hasNext以这种方式使用方法可能会有所帮助 -

while(itr.hasNext()) {
   //operation on list like ADD
}
于 2013-08-30T08:18:27.613 回答
0
for (Object o : list) {
    newList.add((String) o);
}

请注意,如果可能的话,您不应该有一个没有类型参数的列表。

在这次尝试中:

 List<String> newList=new ArrayList<String>();
 for(String item:list){
 newList.add(item);
 }

Java 似乎元素的静态类型listObject. 您不能在没有强制转换的情况下将它们分配给String变量,因此 Java 拒绝允许您的代码。

在这次尝试中:

 Object elemnt=itr.hasNext();
 newList.add((String)element);

hasNext不返回下一个元素。true如果列表有更多要迭代的元素,则返回。它返回的布尔值被自动装箱为 aBoolean并存储在 中elemnt,然后尝试将其Boolean转换为String失败。

在这次尝试中:

newList.add(item.toString());

toString不是你如何将你知道的东西String转换为静态类型String,但它本身不会导致崩溃或编译错误。您可能在其他地方有更多错误。

于 2013-08-30T07:07:22.823 回答
0

修改您的代码如下: 如果要从方法返回相同的映射,则无需将映射传递给方法。

public Map<Object,Object> populateMap(List list){
   Map<Object,Object> paramMap = new HashMap<Object,Object>();

   if(list != null & list.size() > 0){
       int key = 1;
       for(Object obj : list){
           paramMap.put(("Key"+key), obj);
           key++;
       }
   }
    return paramMap;
}

像这样调用你的方法:

Map<Object,Object> paramMap = populateMap(list);
于 2013-08-30T07:44:24.253 回答
0
 Object elemnt=itr.hasNext();
 newList.add((String)element);

这会崩溃,因为Iterator.hasNext()它是一个布尔值。正确的代码是:

while(itr.hasNext())
   newList.add((String)itr.next());

或类似的东西。

于 2013-08-30T07:12:20.420 回答