public void setKeys(List<SvgPathData> keys) {



int index=0;
while(keys.iterator().hasNext()){
index++;

String id=(String) keys.iterator().next().getPathID();

Keys.add(index,id);

}






}
我从外面传进一个<SvgPathData>的List,我想把它变为ArrayList的Keys,怎么办,我这样是有错误的.

解决方案 »

  1.   

    不知道你这是想干什么,从List里面取东西,又添加到自己里面。
      

  2.   

    试下<ArrayList>强制转换吧!
      

  3.   

    我命名不太好,Keys.是我要的,keys这个是外面传进来的
      

  4.   

    public void setKeys(List<SvgPathData> keys) {



    int index=0;
    while(keys.iterator().hasNext()){


    String id=(String) keys.iterator().next().getPathID();

    Keys.add(index,id);
    index++;
    }






    }
     "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.ArrayList.ensureCapacity(Unknown Source)
    at java.util.ArrayList.add(Unknown Source)
      

  5.   

    你的方法有问题,你传进来的是带泛型的keys, 所以所有的操作必须为SvgPathData
    如果你想换,那就
    public void setKeys(List <SvgPathData> keys) { 
    ==〉
    public void setKeys(List keys) {  // 这里不要使用泛型
        int index = 0;
        Iterator it = keys.iterator();
        while (it.hasNext()) {
          index++;
          String id = (String) ((SvgPathData)(it.next())).getPathID();
          keys.add(index, id);
        }
      }
      

  6.   

    调用NEXT()方法里.必须先调用HASNEXT()方法
      

  7.   

    public void setKeys(List <SvgPathData> keys) { int index=0; 
    while(keys.iterator().hasNext()){ 
    index++; String id=(String) keys.iterator().next().getPathID(); Keys.add(index,id); //你这里有问题!!!很奇怪。} 
    按你的意思,我给以下代码你参考:
    public ArrayList setKeys(List <SvgPathData> keys) { ArrayList arrayList=new ArrayList();int index=0; 
    while(keys.iterator().hasNext()){ 
    index++; String id=(String) keys.iterator().next().getPathID(); arrayList.add(index,id); } 
    return arrayList;
    }
      

  8.   

    补充;这个返回一个ArrayList值,所以,你使用它的时候,可以这样:ArrayList alist=setKeys(keys);
    参数keys是你传的,返回了你需要的结果!
      

  9.   

    最重要的是这一句Iterator it=keys.iterator()要提出来就好了,谢谢.否则就会环死
      

  10.   


    我想,这位朋友已经给你很明确的思路了,你的keys和Keys(一个大写一个小写,你最好注意JAVA的编码规范!),那么你的Keys又是在那里创建的呢?我们什么没看到?如果需要返回List对象,那么:public List setKeys(List  <SvgPathData> keys) {  ArrayList arrayList;
    //加一个List, 注意不能用List  <SvgPathData> keys,因为你已经将它转化为SvgPathData类型了.
    List KeyList=new List ();int index=0;  
    while(keys.iterator().hasNext()){  
        index++; 
        //没次进入循环都创建,很烦恼哦........呵呵
        arrayList=new ArrayList();  
        String id=(String) keys.iterator().next().getPathID();  
        arrayList.add(index,id);
        KeyList.add(arrayList);   
        //似乎感觉没意义,如果是我,我可能不会这样做.
        //键和值,太难获取了,怎么会给键取1,2,3,4..........
    }  
    return KeyList; 

      

  11.   

    楼上强烈抗议你说出这么有道理的话.
    我咋没有这气势呢
    谢谢大家热心还是
    前两天问了一个RC2文件的问题,以为有高人能指点一下,结果一个个牛哄哄,说些不着边的话,三四个红星了不知道怎么混出来的,楞说不可改变,不用改变什么的,那只能说明没遇见这种方法,却非常夜郎自大,
    最后还是在MSDN是找到答案,连代码都有.
      

  12.   

    你TM的什么态度?自己都表达不清楚怪别人.你自己看你那命名什么什么几吧的规则?真TM的垃圾一个!我是管理员早封你号!
    你自己看我们好心给你意见和解答(因为我们根本就没调试过,直接打出来的,难免出错),即使帮不了你.你用得着骂我们吗?
    人人都有难的时候,你这难算什么?谁能保证一找就找对人帮解决的?被骂的朋友.我们站起来!鄙视这类人杂!!!!!!!!!!