锁定老帖子 主题:一道面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-12
泛型没有办法使用基本数据类型,如果要转换的数组时int char 如何解决
|
|
返回顶楼 | |
发表时间:2010-07-12
ZhangShukai 写道 liang86 写道 yutianl 写道 面试的时候,遇到一道题:
将一个数组的元素重新存储到Collection中并返回。需考虑方法的通用性。提示,使用泛型 感觉应该不难,但对泛型用的比较少,没答出来,不知怎么写。 其实这个是很基本的面试题 可以按如下设计 注: 面试题中的Collection指的是集合的接口Collection的实现类有Vector、List和Set,具体点有ArrayList\LinkeList\HashSet\TreeSet等,下面只列出了一种,用到是稍做更改就可以了 T代表数组的类型,这样就考虑到了方法的通用性 public void arrayToCollection(T arr[]){ ArrayList<T> arrayList=new ArrayList<T>(); for(int i=0;i<arr.length;i++){ arrayList.add(arr[i]} } } 真的假的,这么简单的吗??? 感觉用命令模式调用Collections里面的add方法 我大体写下,没有测试,提供个思路: public Collection fillin(Collection collection, T[] array) { for (T t : array) { collection.add(t); } return collection; } |
|
返回顶楼 | |
发表时间:2010-07-12
stefanoli_0705 写道 ZhangShukai 写道 liang86 写道 yutianl 写道 面试的时候,遇到一道题:
将一个数组的元素重新存储到Collection中并返回。需考虑方法的通用性。提示,使用泛型 感觉应该不难,但对泛型用的比较少,没答出来,不知怎么写。 其实这个是很基本的面试题 可以按如下设计 注: 面试题中的Collection指的是集合的接口Collection的实现类有Vector、List和Set,具体点有ArrayList\LinkeList\HashSet\TreeSet等,下面只列出了一种,用到是稍做更改就可以了 T代表数组的类型,这样就考虑到了方法的通用性 public void arrayToCollection(T arr[]){ ArrayList<T> arrayList=new ArrayList<T>(); for(int i=0;i<arr.length;i++){ arrayList.add(arr[i]} } } 真的假的,这么简单的吗??? 感觉用命令模式调用Collections里面的add方法 我大体写下,没有测试,提供个思路: public Collection fillin(Collection collection, T[] array) { for (T t : array) { collection.add(t); } return collection; } 刚刚写了一个测试类,这样就可以了。上一个例子还是有点问题,有可能会有warning public class JutilExtHelper { public static <T> Collection<T> copy(Collection<T> collection, T[] array) { for (T t : array) collection.add(t); return collection; } public static void main(String args[]) { List<String> list = (List<String>) copy(new ArrayList<String>(), args); for (String str : list) { System.out.println("one of the content is: " + str); } } } |
|
返回顶楼 | |
发表时间:2010-07-12
zha_zi 写道 泛型没有办法使用基本数据类型,如果要转换的数组时int char 如何解决
不太方便,有可能要考虑jvm的隐式转换问题,即声明集合类的时候<Integer>这种东西,但是相对就比较麻烦了。 |
|
返回顶楼 | |