学习一时爽,一直学习一直爽
今天是10.24,不是我的日子,继续回顾学习
Array和ArrayList
Array可以包括基本类型和对象类型,而ArrayList只能包括对象类型。 Array的大小是固定的,而ArrayList的大小是可以动态变化的。
简单来说,ArrayList是一个长度可以自动增长的Array
其实上面一句话就道尽了两者最核心的区别
长度:Array长度固定,ArrayList可以动态扩容
效率:效率上Array>ArrayList,原因自然在于ArrayList动态扩容造成了效率损耗
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayTest { public static void main(String[] args) { /* Array可以包括基本类型和对象类型,而ArrayList只能包括对象类型。 Array的大小是固定的,而ArrayList的大小是可以动态变化的。 简单来说,ArrayList是一个长度可以自动增长的Array 其实上面一句话就道尽了两者最核心的区别 - 长度:Array长度固定,ArrayList可以动态扩容 - 效率:效率上Array>ArrayList,原因自然在于ArrayList动态扩容造成了效率损耗 */ // array转Arraylist String[] a = {"a", "b", "c"}; System.out.println(a); List alist = Arrays.asList(a); System.out.println(alist); // ArrayList 转 array List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); int len = list.size(); // (String[]) list.toArray(new String[len]) 固定写法 String[] array = (String[]) list.toArray(new String[len]); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } System.out.println(array); } }
通过索引创建array
import java.util.Arrays; import java.util.List; public class ArratList2 { public static void main(String[] args) { /* 通过索引创建array */ String[] array = new String[5]; array[0] = "M"; array[1] = "A"; array[2] = "O"; array[3] = "L"; array[4] = "I"; System.out.println(array[0]); // array转list List<String> list = Arrays.asList(array); System.out.println(list); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
ArrayList和HashSet
众所周知:List是接口,ArrayList实现了List接口。那HashSet又是什么玩意?
ArrayList实现了List接口,HashSet实现了Set接口,List和Set都是继承Collection接口。
ArrayList底层是动态数组,HashSet底层是哈希表。
ArrayList存放的是对象的引用,HashSet存放之前检索对象的HashCode,所以当存入对象时要重写hashCode(),如果只是比较对象,只需要重写equals()方法,
ArrayList是有序可重复,HashSet是无序不可重复。
对于 HashSet 而言,它是基于 HashMap 实现的,底层采用 HashMap 来保存元素
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; public class UseSetAppMain { public static void main(String[] args) { printCollection(addElementsToCollection(new HashSet())); /* 输出class java.util.HashSet中的元素,共5个 str3 str4 str1 str2 str0 */ System.out.println("-------------------------"); printCollection(addElementsToCollection(new ArrayList())); /* 输出class java.util.ArrayList中的元素,共10个 str0 str1 str2 str3 str4 str0 str1 str2 str3 str4 */ } // 添加数据 public static Collection addElementsToCollection(Collection collection) { for (int i = 0; i < 10; i++) { collection.add("str" + (i % 5)); } return collection; } public static void printCollection(Collection collection) { System.out.println(); System.out.println("输出" + collection.getClass() + "中的元素,共" + collection.size() + "个"); try { for (Object element : collection) { System.out.println(element); } } catch (Exception e) { e.printStackTrace(); } } }
查看更多关于Array,ArrayList和HashSet的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did127784