好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Array,ArrayList和HashSet

学习一时爽,一直学习一直爽

今天是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的详细内容...

  阅读:33次