泛型方法应用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); } }
(谢谢)
13
收起
正在回答
1回答
同学你好,同学的代码逻辑是没有问题的。
不过可以再优化一下:
对于transferToMap方法来说,第一个数组固定是作为key的,那么并不需要要求两个数组的长度必须相同。也可以是第一个数组的长度大于第二个数组,因为value是可以为null的。
另外,如果第一个数组的长度小于第二个数组,可以将第一个数组作为key,第二个数组超出长度的数据进行舍弃,而不是单纯的返回null,可能会更好一些。
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星