泛型方法应用Map的问题
问题描述:
课程演示了使用泛型方法讲数组转化为List。List,Set,Queue都是单值,都很像。然后我想到Map存的是两个值,它是不一样的,它对泛型的使用时也多了一个数据。所以我想尝试使用泛型方法讲2个数组转化为Map。我尝试写出了代码,输出也正确。但是我不知道自己对于泛型方法对Map类型的应用使用是否正确。请问还有没有可以优化改进的地方。
尝试过的解决方式:
public class PtMethod {
//泛型方法,要求返回值类型与参数类型保持一致
public <T> List<T> transferToList(T[] array){
List<T> list = new ArrayList();
for(T item : array){
list.add(item);
}
return list;
}
//键值对泛型方法转化数组为Map
public <K,V> Map<K,V> transferToMap(K[] key,V[] value){
//长度必须相等,键值对是一一对应的映射关系
if (key.length != value.length) return null;
Map<K, V> map = new HashMap<>();
for (int i = 0; i< key.length;i++ ){
map.put(key[i],value[i]);
}
return map;
}
public static void main(String[] args) {
PtMethod ptMethod = new PtMethod();
String[] array = new String[]{"A", "B", "C", "D", "E"};
List<String> list = ptMethod.transferToList(array);
System.out.println(list);
//测试值
String[] array1 = new String[]{"asd", "dsa", "Cqwe", "azx", "asdqe"};
String[] array2 = new String[]{"A", "B", "C", "D", "E"};
//接收泛型方法返回值
Map<String,String> map = ptMethod.transferToMap(array1, array2);
//输出
System.out.println(map);
}
}(谢谢)
14
收起
正在回答
1回答
同学你好,同学的代码逻辑是没有问题的。
不过可以再优化一下:
对于transferToMap方法来说,第一个数组固定是作为key的,那么并不需要要求两个数组的长度必须相同。也可以是第一个数组的长度大于第二个数组,因为value是可以为null的。
另外,如果第一个数组的长度小于第二个数组,可以将第一个数组作为key,第二个数组超出长度的数据进行舍弃,而不是单纯的返回null,可能会更好一些。
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星