java数据结构
计算机存储数据,组织数据的方式。
java数据结构的分类:
1.数组
最基础的数据结构,也是刚接触java时学的,编码形式:类型 [] 变量名 = new 类型[个数];
优点:随机读取方便,快捷;
缺点:插入,删除较复杂。
2.List《列表》
实现类:ArrayList,LinkedList。
ArrayList
优点 :随机读取较快。
缺点:插入删除较麻烦。
LinkedList (以链表的形式存储数据)
优点:插入删除较简单。
缺点:随机读取较复杂。
还有一种列表的数据结构叫Vector,它和上面两个的区别在于Vector是线程安全。
3.Set《集合》
实现类:HashSet,TreeSet, LinkedHashSet
HashSet
带有哈希表,以哈希算法的方式存储数据。
TreeSet
带有排序功能的集合,将插入的元素按照自己的排序算法进行排序,
当然了,也可以自己实现自己的排序算法。
LinkedHashSet
以链表的形式,同时运行哈希算法存储数据。
4.Map《映射》
实现类:HashMap,LinkedHashMap,TreeHashMap,HashTable(线程安全),ConcurrentHashMap(线程安全)。
这里主要讲HashTable和ConcurrentHashMap的区别:
HashTable:单线程安全,一个线程访问整张数据表,造成了浪费。
ConcurrentHashMap:可以理解为多线程安全,将整张数据表分为16个子表,减少了浪费,允许多个线程访问整张表。
个人总结:
List和Set的区别在于,List允许存入的元素相同,Set不允许。
Map则是键值必须唯一
关于这些数据结构的名字:
包含Linked,都是采用链表的形式存储,所以插入删除较为方便。
包含Hash,都是采用哈希算法,有一个哈希表。
包含Tree,一般该数据结构的数据都是有序的。