黑马程序员技术交流社区

标题: 泛型有关问题 [打印本页]

作者: 杨成    时间: 2013-9-4 01:35
标题: 泛型有关问题
本帖最后由 杨成 于 2013-9-4 14:32 编辑

定义一个方法,把任意参数类型的集合中的数据安全地复制到相应类型的数组中。
   public static <T> void copy1(Collection <T> dest,T[] src){
  
   }
定义一个方法,把任意参数类型的一个数组中的数据安全地复制到相应类型的另一个数组中。
  public static <T> void copy2(T[] dest,T[] src){
  
  }


有哪位大神帮忙实现下,我做的总是有点问题,求赐教!


作者: 张歆明    时间: 2013-9-4 10:08
你能不能把你的代码贴出来 大家看下呢  这样你自己写的就会改正过来
作者: 耿国锋    时间: 2013-9-4 11:19
        public static <T> void copy1(Collection<T> dest,T[] src){
                int pos = 0 ;
                Iterator<T> it = dest.iterator();
                while(it.hasNext()){
                        T t = it.next();
                        src[pos]= t;
                        pos++ ;
                }
        }
测试是对的,希望对你有用。主要就是在集合迭代与数组角标和泛型规范这。copy2方法体原理一样,自己动手动脑写写。
作者: 杨成    时间: 2013-9-4 14:28
唉,昨晚上睡太晚了,不清醒,今天看出来了!

public static <T> void copy1(Collection <T> dest,T[] src){
                 System.out.println(src.length+":"+dest.size());
                 if(src.length<dest.size())
                         System.out.println("目标数组存储空间不够");
                 
                 /*int pos = 0 ;
               Iterator<T> it = dest.iterator();
               while(it.hasNext()){
                       T t = it.next();
                       src[pos]= t;
                       pos++ ;
               } */
                 
                dest.toArray(src);         
                System.out.println(src.length+":"+dest.size());
}
         
public static <T> void copy2(T[] dest,T[] src){
                 
                 if(src.length<dest.length)
                         System.out.println("目标数组存储空间不够");
                 
                 for(int i=0;i<dest.length;i++){
                         src[i]=dest[i];
                 }
                  
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2