集合、数组 详解

一、数组:就是相同数据类型的元素按一定顺序排列的集合 
数组的声明 
一、 
声明成绩数组 
int[] scores = new int[5]; 
动态初始化(动态初始化) 
scores[0] = 95; 
scores[1] = 85; 
scores[2] = 90; 
scores[3] = 93; 
scores[4] = 88; 
数组的静态初始化 
int a[ ]={1,2,3,4}; 
int a[ ]=new int[ ]{3,4,5}; 
数组中排序常用的 java.util.Arrays 对数组进行处理 (可以对比jdkdoc进行比较);

二、集合 : Collection 是个接口,以下的所有 
集合类说明及区别 
Collection 
├List 
│├LinkedList 
│├ArrayList 
│└Vector 
 └Stack 
└Set 
Map 
├Hashtable 
├HashMap 

└WeakHashMap

Java中的集合类及关系图

3.说明

ListSet继承自Collection接口。他们两个都是接口

Set 无序不允许元素重复。 HashSet TreeSet 是两个主要的实现类。
List
有序且允许元素重复。 ArrayList LinkedList Vector 是三个主要的实现类。
Map
也属于集合系统,但和 Collection 接口没关系。 Map key value 的映射集合,其中 key 列就是一个集合。 key 不能重复,但是 value 可以重复。 HashMap TreeMap Hashtable 是三个主要的实现类。

SortedSetSortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。

4.HashMap, HashTable, HashTree, LinkedHashMap区别分析

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap.

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列.

HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。

HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。

在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值