数组、集合的区别

来源:互联网 发布:ubuntu 两个源 编辑:程序博客网 时间:2024/05/29 10:04
一、数组
        数组是连续存储的,所以数组的存储在计算机内存中是一块连续的区域;如果是通过new关键字去创建一个数组对象,数据是存储在堆中,理论上讲是无限制的,是否会溢出跟计算机和其他设备模拟临时存储空间有关;如果是通过int a[]这种方式去申请存储空间,那就是存储在栈中,分配的存储空间跟编译器有关,一般是不超过1M,当定义为1024*1024*511不会报错,而1024*1024*522则会报错。


二、链表

        链表是离散存储的,所以要在链表中插入一个数据,只需要在内存中申请一块存储空间就行了。综合数组的特点,可以看出数组比较适合查询操作,如果是插入数据,使用链表效率比较高。


三、集合

3.1 Collection是最基本的集合接口,set 和 list都是继承Collection接口,set是最简单的一种集合,集合中的对象没有特定的排列顺序,set接口主要实现了两个类:

1、HashSet类按照哈希算法来存储集合中的对象,存储速度很快。

2、TreeSet类实现了SortedSet,能够对Set集合进行排序

LinkedHashSet:具有HashSet查询的查询速度,且使用链表维护元素的顺序

Iterator()和toArray()方法都适用于集合中的所有元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组

       Iterator接口声明了如下方法:

       hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true

       next():返回下一个元素

       remove():从集合中删除上一个有next()方法返回的元素


3.2 List的特征是其元素以线性方式存储,集合可以存放重复的对象

list接口主要实现的类包括:

ArrayList():由数组实现的的List,可以对集合中的元素进行随机访问,向ArrayList()中插入与删除元素较慢

LinkedList():在实现中采用链表数据结构,插入和删除的速度较快,访问速度较慢

使用迭代器(Iterator):

Iterator it = list.iterator();

while (it.hashNext()){

System.out.println(it.next());


3.3 Map 键值对映射关系的对象, 每一个元素都包含一对键值对,Map集合中的键对象不允许重复,也就是说对多相同的键对象指向的的是同一个值对象。




原创粉丝点击