数组和集合的区别及深入了解

一、什么是数组

数组:Java提供了一个用于存储相同类型的元素的固定大小的连续集合数据结构。本质还是一个对象,继承自Object。

数组是用于存储数据的集合,储存相同类型数据的集合。

与单个变量相比(如number0, number1 … number99),数组变量需要使用下标索引来确定数组中某个数据的顺序(如numbers[0], numbers1 … numbers[99] )。

  数组按照使用可以分为一维数组、二维数组、多维数组

数组的定义   int[] i=new int[5];     int i []=new int[5];

二、什么是集合

集合:存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。 通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。

 

 

 

Java SDK不提供直接继承自Collection的类,java SDK提供的类都是继承自Collection的“子接口”如List和Set。

 

不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一个元素
    

 

Linked 改快读慢

Array 读快改慢

Hash 两都之间

 

Collection是集合接口
    |————Set子接口:无序,不允许重复。
    |————List子接口:有序,可以有重复元素。

    区别:Collections是集合类

    SetList对比:
    Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
    List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

 

    SetList具体子类:
    Set
     |————HashSet:以哈希表的形式存放元素,插入删除速度很快。

    List
     |————ArrayList:动态数组
     |————LinkedList:链表、队列、堆栈。

 

    Arrayjava.util.Vector
    Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

 

一、collectionMap,  collectioncollections 区别

 Collection java集合框架的一个顶级接口,存储的元素是任意类型的对象。

Mapjava集合的映射接口,以键值对的形式存储对象。

Collections  java集合框架的一个工具类,定义了若干个静态方法,对集合对象进行操作。

二、ArrayList LinkedList  ,ArraylistVector 区别

都是List的实现类,主要区别是底层的数据结构不同

ArrayList 相当于一个动态数组 ,需要随机访问列表中的元素,ArrayList的性能更高

LinkedList 链表式数据结构,当需要频繁的插入,删除列表中的元素时,性能高

 

ArraylistVector方法几乎相同,都是List的实现类。

Arraylist 是在jdk1.2时增加的, vector 是在jdk1.0增加的。

vector 线程同步,(同一时刻只能有一个线程访问)

ArrayList  线程不同步,可以使用 collections.synchronizedList方法实现线程同步

 List list=collections.synchronizedList(new arrayList())

 

Hashtable HashMap 区别 ,HashsettreeSet区别

Hashtable JDK1.0中的类,JDK1.2实现map接口,

HashMapJDK1.2中新增的类,实现Map接口

Hashtable 线程同步 ,HashMap不同步,可以使用Collections.synchronizedMap()变成线程同步

Hashtable  key value值都不能空

HashMap 可以有一个空的key值,多个空的value

 

HashsettreeSet区别

都是set的实现类,保证元素的唯一性不重复

TreeSet能将元素按升序排列

 

Set List的区别

都是Collection的子接口,

Set中元素不重复,且无须,

List中元素可以重复 且有序

 

三、数组和集合的优缺点

Array可以包含基本类型和对象类型,ArrayList只能包含对象类型
Array大小是固定的,ArrayList的大小是动态变化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

posted @ 2017-09-25 15:17  吾心已无  阅读(3080)  评论(0编辑  收藏  举报
CopyRight (C) 2017 By:吾心已无

博客友链招募中,欢迎喜欢开发、喜欢分享的朋友交换。另外欢迎进入本博客,谢谢惠顾