java集合

1、集合概念

回忆数组–数组有固定的长度
int[] arry=new int[10];

针对数据长度可变的情况—》集合
java集合 应对动态增长数据(在编译的时候无法知道具体的数据量)
集合类–>可变容器类

2、集合和数组的区别

都是容器
(1)数组是固定长度,集合的长度是可变的
(2)数组放的数据都是基本类型数据(四类8种),但是集合放的数据都是引用数据类型
(String、自定义的对象、Integer–int、Long)
(3)集合中对于基本数据会转换为引用数据类型再存储

3、集合包含内容

(1)Collection–接口 Interface

Interface Collection<E>---add 方法
public abstract class AbstractCollection<E> extends Object implements Collection<E>
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

a、List(接口)集合—特定顺序的元素

public interface List<E> extends Collection<E>

add(int index, E element) —指定索引处增加元素的位置
iterator() 以正确的顺序返回该列表中的元素的迭代器

b、Set(接口)集合–不能够有重复的元素

(2)Map–类似于数据库
主要存储”键值对” key-value MapReduce

(3)Iterable 集合的访问迭代 返回此集合中的元素的迭代器
没有关于元素返回顺序的保证(除非这个集合是提供保证的某个类的实例)

4、集合框架->集合的继承关系图

Collection接口 Map
Collection 、Map 、List 、Set 等都是 Interface
AbstractCollection、 Abstractlist等 抽象类 实现了 Interface的部分方法
ArrayList 、LinkedList等 具体实现类 实现了 所有方法

5、List集合介绍

List集合是一个有序(索引有序)、可重复的集合,集合中每个元素都有对应的顺序索引
List允许加入重复元素是因为可以通过索引来访问指定位置的元素
List集合默认按照元素的添加顺序增加元素的索引

6、List集合->ArrayList

(1)ArrayList简介
ArrayList 是基于数组实现的List类。实现所有可选列表操作,并允许所有元素,包括null
(2)初始化 ArrayList

ArrayList<E> arrayList=new ArrayList<E>();---初始数据类型为E,容量大小为10List

(3)主要方法
boolean add(E e) 将指定的元素追加到此列表的末尾
void add(int index, E element) 在此列表中的指定位置插入指定的元素
boolean addAll(Collection<? extends E> c) 按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾
boolean addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到此列表中,从指定的位置开始
boolean contains(Object o) 如果此列表包含指定的元素,则返回 true
E get(int index) 返回此列表中指定位置的元素
E remove(int index) 删除该列表中指定位置的元素
E set(int index, E element) 用指定的元素替换此列表中指定位置的元素
Object[] toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组

(4)List集合遍历的四种方法
a、通过 List.size
b、通过Iterator
boolean hasNext() 如果迭代具有更多元素,则返回 true
E next() 返回迭代中的下一个元素

7、List集合->LinkedList

LinkedList 指的是链表类数据结构
与ArrayList的不同
(1)链表中的元素可以任意的增加和删除,效率很高,但是 查询效率不如ArrayList(有索引)
a->b->c….
(2)将对象存放在独立的空间中,而且每个空间保存了下一个连接的索引
(3)初始化
LinkedList linkedlist=new LinkedList();
(4)主要的方法
void addFirst(E e) 在该列表开头插入指定的元素
void addLast(E e) 将指定的元素追加到此列表的末尾
E peekFirst() 检索但不删除此列表的第一个元素,如果此列表为空,则返回 null
peekLast() 检索但不删除此列表的最后一个元素,如果此列表为空,则返回 null
pop() 从此列表表示的堆栈中弹出一个元素

8、Set接口的介绍

set集合存放无序不可重复的元素
list集合 存放有序可重复的元素。—索引
set集合不按照特定方式进行排序,只是放元素放在集合
set主要是由 HashSet和TreeSet具体实现类实现

9、Set集合->HashSet

Hash(哈希算法)—-哈希函数定义的好坏
HashCode—哈希值
(1)equals()方法判断两个元素的HashCode值是否相同
(2)如果Hashcode值相同,继续与集合的元素作比较,
如果还相同则视为同一个对象,不保存在HashSet中
如果对象不相同,理论上要存储(比价麻烦)–避免发生
(3)如果HashCode值不相同,直接把元素存放在该元素的Hashcode位置
public class HashSet extends AbstractSet implements Set, Cloneable, Serializable
(4)构造函数
HashSet hashSet=new HashSet();
boolean add(E e) 将指定的元素添加到此集合(如果尚未存在)
boolean contains(Object o) 如果此集合包含指定的元素,则返回 true

10、Set集合->TreeSet

TreeSet 是一个有序集合,默认将元素按照升序排列,Comparable接口
equals方法 判断元素是否重复
比较器 比较一下大小顺序

11、Map 集合

Set 与list 都属于 Collection
Map每个元素的值都包含两个对象:key-value 键值对
key不能够重复;唯一的key 可以对应多个value
map中不存在索引,有key
循环访问的方式

12、Map集合->HashMap

Hash算法
public class HashMap<K,V>extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
允许null的值和null键
(1)初始化
HashMap<key,value> hashMap=new HashMap<key,value> ();

(2)主要的方法
put(K key, V value) 将指定的值与此映射中的指定键相关联
get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射
Set keySet() 返回此地图中包含的键的Set视图
boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true
boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定值,则返回 true

13、Map集合->HashTable

不接受 Null
为了成功的在hashtable中存储和获取对象,用作键的对象必须实现 hashcode和equals方法

14、总结

集合动态可扩展
Set代表无序集合不重复,(TreeSet 有序)
List集合有序可重复
Map 集合存储键值对- key value
自定义对象 要重写 方法(HashCode Comparator equals等)

posted @ 2019-02-19 21:08  hsiehchou  阅读(162)  评论(0编辑  收藏  举报