Java中Array、List、Map相互转换

您所在的位置:网站首页 聊斋86版电视剧全集免费 Java中Array、List、Map相互转换

Java中Array、List、Map相互转换

#Java中Array、List、Map相互转换| 来源: 网络整理| 查看: 265

引言:        

        在实际项目开发中或者一些算法面试题目中经常需要用到Java中这三种类型的相互转换,比如对于一个整型数组中寻找一个整数与所给的一个整数值相同,正常情况下第一反应会想到用for循环直接遍历这个数组就可以实现,不过这种情况下时间复杂度将会是O(n),空间复杂度是O(1)。如果再多加几个条件还使用多层for循环嵌套的话也可以实现,不过时间复杂度将会以指数级增长。我们可以说多层for循环嵌套可以实现功能,但就执行时间来说,它绝不会是一个好的解决方法。那么如何降低时间复杂度呢,这个时候我们可以考虑一下将这个整型数组转换为一个Map,因为Map是以key,value键值对形式存储,value允许重复,但是key不允许重复。使用Map中map.containsKey()方法可以轻松实现对于key是否存在一个值的查找,此种方法时间复杂度为O(1),空间复杂度为O(n),其中 n 是数组中的元素数量,主要为哈希表的开销。这就降低了方法的执行时间,算是一种算法上的优化。

补充:

一个好的算法要求正确性、可读性、健壮性、时间效率高而且空间使用率低、简单性。

算法的复杂度分为时间复杂度和空间复杂度。

时间复杂度:

时间复杂度实际上是一个函数,代表基本操作重复执行的次数,进而分析函数虽变量的变化来确定数量级,数量级用O表示,如O(1),O(n),O(n^2)等。

空间复杂度:

是对一个算法在运行过程中临时占用存储空间的度量,一个算法在计算机存储器上所占用的存储空间包括存储算法本身所占用的空间,算数和输入输出所占用的存储空间以及临时占用存储空间三个部分,算法的输入输出数据所占用的存储空间是由待解决的问题来决定的,通过参数表由调用函数而来,它随本算法的不同而改变,存储算法本身所占用的存储空间有算法的书写长短成正比。算法在运行过程中占用的临时空间由不同的算法决定。

时间复杂度与空间复杂度没有必然联系,但是也有以空间换时间或时间换空间,现今项目中一般要求效率,大部分需要降低执行时间即降低时间复杂度,以空间换时间来提高效率。不过在这两者之间取舍需要具体问题具体分析。

正文: Array转List:

        有两种方法可以将array转为list,一种是使用Arrays.asList()方法直接转换,不过此种方法的list长度固定,无法进行添加删除操作。另一种是使用for循环遍历数组元素逐个添加进一个空的list中。

/** * 方法一:使用Arrays.asList()方法将数组转为list,不过此种方法有限制,返回的对象是Arrays的内部类 * 对于转换后的list操作仍然反映在原数组上,因此这个list是定长的,无法使用list的add()喝remove()方法 */ public static void array_list(String[] array){ List list = Arrays.asList(array); System.out.println("数组转List 的第一种方法:"+list); // list.remove("李四"); // list.add("刘六"); // System.out.println(“修改后:”list); } /** * 方法二:正常情况下array转换为list,使用for循环将数组中的元素逐个添加到一个空的list中 */ public static void array_list2(String[] array){ List list = new ArrayList(); for (int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3