Java中的数据结构(基本数据,集合,数据结构)
Java中的数据类型
基本数据类型及包装类型:
序号 |
数据类型 |
大小/字节 |
大小/bit |
范围 |
包装类型 |
1 |
byte |
1 |
8 |
-2^31 ~ 2^31-1 |
Byte |
2 |
char |
2 |
16 |
|
Character |
3 |
short |
2 |
16 |
-2^15 ~ 2^15-1 |
Short |
4 |
int |
4 |
32 |
-2^31 ~ 2^31-1 |
Integer |
5 |
long |
8 |
64 |
-2^63 ~ 2^63-1 |
Long |
6 |
float |
4 |
32 |
|
Float |
7 |
double |
8 |
64 |
|
Double |
8 |
boolean |
2 |
16 |
True/false |
Boolean |
数组:Java 语言中提供的数组是用来存储固定大小的同类型元素。
Java数据结构:
(1)a.向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。和数组一样,Vector对象的元素也能通过索引访问。使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。
b.与arraylist区别:vector线程安全,arraylist扩容是原来0.5倍,vector是1倍
c.常用方法:add(),remove(),clear(),contains()等
(2)stack 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
常用方法:pop() 弹栈 push() 压栈 peek() 查看顶栈情况
(3)Queue 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,我们可以把LinkedList当成Queue来用。
(3)枚举(Enumeration)
(4)位集合(BitSet)
(5)字典(Dictionary)作用和Map类相似
(6)哈希表(Hashtable)
Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。
(7)属性(Properties))Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串
Collection:
(此图来自菜鸟教程)
Set和List的区别
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
Set常用用法:https://blog.****.net/wjsone/article/details/100182953
(来自菜鸟教程部分)
序号 |
类描述 |
1 |
LinkedList该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如: List list=Collections.synchronizedList(newLinkedList(...)); LinkedList 查找效率低。 |
2 |
ArrayList 该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。 该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。 |
3 |
HashSet 该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。 |
4 |
LinkedHashSet具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。 |
5 |
TreeSet该类实现了Set接口,可以实现排序等功能。 |
6 |
HashMap |
7 |
TreeMap继承了AbstractMap,并且使用一颗树。 |
8 |
LinkedHashMap继承于HashMap,使用元素的自然顺序对元素进行排序. |
9 |
IdentityHashMap继承AbstractMap类,比较文档时使用引用相等。 |