集合 篇
Collection 集合(接口)
add(value);
List 集合(接口)--重复元素,将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。ArrayList --- 数组+单向链表 ,顺序 , 由数组实现的List。它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。
LinkedList --- 数组+双向链表 ,首尾,只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。
TreeSet 集合
底层 TreeMap 处理 add()--> put(key,value)
集合元素有一定的排序规则(比较器)
自然排序: Comparable 接口--compareTo()
compareTo()
学号升序
名字升序
}
自定义: Comparator 接口--compare()
定义TreeSet集合时,指定排序规则
new TreeSet<> (
new Comparator( ){
int compare()
} );
Map 集合
基本特点:
1. 向集合中添加元素 put(key,value )
maps
maps.put( 1,"hello" ) -- Entry<key,value>
maps.put( 2,"morning")-- Entry
keySet(): 所有key
values(): 所有values
entrySet(): 所有 Entry对象
基本数据类型
对象数据类型数据重复:
1. User 类 hashCode() equals()
2.
users
u1 = new User("101","王小王");
u2 = new User("101","王小王");
u3 = new User("","");
users.put( u1, 2);
users.put( u2, 1);
users.put( u3, 3);
3. Map集合的具体实现:
HashMap :
TreeMap :
HashMap 集合
HashMap 集合的特点:
1. 底层使用 哈希表 的结构存储元素
哈希表: 数组+链表结构
数据结构中存储数据时经常用到的三种结构:
数组:长度定义定义之后,不能再改变;顺序取数据时
效率高;若增加数组元素,需要重要开辟新空间,
浪费空间且增加执行负担
链表:可随意扩容长度,存储数据时,可随机存储,
数据在表中存储位置较零散,查找某数据时
数据量大;
哈希表:将 数组和链表的特点结合起来,存取数据
操作数据方便,效率得到提高;
b. HashMap 在存储数据时,两个重要参数:
注:这两个参数是基于 哈希表 操作的;
capacity:容量
load factor: 类加载因子
初始容量是 哈希表中"桶"的数量,创建一个HashMap后,默认容量为16;
类加载因子: 创建一个HashMap后,类加载因子默认为
类加载因子是哈希表在其容量自动增加之 前可达到多满的一种尺度.一般来说,负因子越大,表中的装载量越多;
c.HashMap 中是如何存储数据的? ( put )
d.放到 HashMap中的数据,不能保证存取顺序一致;
TreeMap 集合
放到TreeMap集合中的元素应该按照一定的规则排序
Comparable Comparator
基本数据类型的封装类已经自动实现,String也实现了
自然排序,默认是按key值排序:
整数按数值从小到大
浮点型从小到大
字符型:ASCII码
TreeMap中提供 了一些 fir*** last**()
FirstKey()| LastKey()
FirstValue()|LastValues()
FirstEntry()|LastEntry
Collection与Collections区别
在学习的时候要注意区分这两个概念。
java.util.Collection 是一个集合接口。
它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
java.util.Collections 是一个包装类。
它包含有各种有关集合操作的静态多态方法。此类未提供public构造器,不能实例化,就像一个工具类,服务于Java的Collection框架。