集合Collection,Map

集合

集合体系概述

Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。

/ (接口) List(元素可以重复):类ArrayList,LinkedList,.......

/ (接口) Collection(单列)

/ \ (接口) Set(元素不可以重复):类HashSet,TreeSet,.......

集合

\ (接口) Map(双列) :类 HashMap, TreeMap,TableMap

Collection 接口

● Collection 接口-定义了存取一组对象的方法,其子接口Set和List分别定义

了存储方式。

● Set 中的数据对象没有顺序且不可以重复。

● List 中的数据对象有顺序且可以重复。

在Collection 中定义了一些集合中的共有方法:

boolean add(Object element); 添加元素

boolean addAll(Collection c); 往一个集合中添加另一个集合

boolean remove(Object element); 删除指定的元素

boolean removeAll(Collection c); 删除了c1在c中的内容

void clear(); 清空集合

int size(); 集合中的元素个数

boolean isEmpty(); 判断集合是否为空

boolean contains(Object element); 当前列表若包含某元素,返回结果为true, 若不包含该元素,返回false

boolean containsAll(Collection c); 是否包含指定集合中的所有元素

boolean retainAll(Collection c);求交集,集合数据发生变化返回true, 不变返回false

List 接口及实现类

● List继承了Collection接口,有三个实现的类

- ArrayList 数组列表,数据采用数组方式存储。

-LinkedList 链表

-Vector 数组列表,添加同步锁,线程安全的

ArrayList实现了长度可变的数组,在内存中分配连续的空间。

遍历元素和随机访问元素的效率比较高

LinkedList采用链表存储方式。插入、删除元素时效率比较高

 

 

ArrayList的常用方法

add(int index, E element) 在指定位置添加指定的元素

get(int index) 得到指定位置的元素

indexOf(Object o) 寻找指定的元素,返回值为list列表中首该个元素出现位置的索引,找不到时返回-1

lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引;如果此列表不包含该元素,则返回-1。

remove(int index) 删除并返回指定位置元素

removeRange(int fromIndex, int toIndex) 删除指定区间的元素(子类继承使用)

set(int index, E element) 将选定位置的替换为指定元素

LinkedList的常用方法

add(int index,Object element) 在指定位置添加指定元素

addFirist(Object element) 在头部添加指定元素

addLast(Object element) 在尾部添加指定元素

get(int index) 得到指定位置元素

removeFirst() 删除第一个元素

removeLast() 删除最后的一个元素

remove(int index) 删除指定位置的元素

getFirst() 返回第一个元素

getLast() 返回最后的一个元素

List接口集合迭代

● for循环遍历

● 增强for循环的遍历

● 迭代器遍历(Iterator)

Set 接口

● Set接口继承了Collection接口。

Set中所存储的元素是不重复的,但是是无序的, Set中的元素是没有索引的

● Set接口有两个实现类

● HashSet (注意在其中的元素是自己定义的类型时需要重写Hashsed方法和equals方法,这么到时比较的是内容的哈希值和内容)

HashSet类中的元素不能重复,即彼此调用equals方法比较,都返回false。

底层数据结构是哈希表+链表

哈希表依赖于哈希值存储

● TreeSet

可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口。

TreeSet底层数据结构是二叉树(红黑树是一种自平衡的二叉树)

Map 接口

lMap接口概述 :

将键映射到值的对象

一个映射不能包含重复的键

每个键最多只能映射到一个值

 

Mapa接口常用方法

V put(K key,V value) 向集合中添加键值对

V remove(Object key) 删除指定的键值对

void clear() 清空集合

boolean containsKey(Object key)

boolean containsValue(Object value)

boolean isEmpty() 判断集合是否为空

int size() 集合的元素个数

V get(Object key) 通过传入的键得到对的值

Collection<V> values() 得到所有值组成的一个集合

Set<K> keySet() 将键转换成一个Set类型的集合

Set<Map.Entry<K,V>> entrySet() 将每一个键值对包装成一个Set集合中的元素

● HashMap

HashMap中元素的key值不能重复,

排列顺序是不固定的,可以存储一个

为null的键。

● TreeMap

TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序

的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。

● HashTable

实现了同步。

不能存储为null的键

Map集合遍历

l 方式1:根据键找值

• 获取所有键的集合

• 遍历键的集合,获取到每一个键

• 根据键找值

l 方式2:根据键值对对象找键和值

• 获取所有键值对对象的集合

• 遍历键值对对象的集合,获取到每一个键值对对象

• 根据键值对对象找键和值

● TreeMap

适用于按自然顺序或自定义顺序遍历键(key)。

TreeMap根据key值排序,key值需要实现Comparable接口,

重写compareTo方法。TreeMap根据compareTo的逻辑,对

key进行排序。

键是红黑树结构,可以保证键的排序和唯一性

Collections 集合处理的工具类,里面包含的都是静态的方法

public void 方法名(int a,int...c){方法体}

int...c可变长度的参数 本质是数组 ,一个参数列表只能含有一个可变长度参数的,并且只能放在参数列表的最后一位

方法的使用

● Collections是集合类的工具类,与数组的工具类Arrays类似.

<>前的list表示传入该静态方法的集合是list接口下的子类

addAll(Col lection<? super T> c, T... elements); 向一个实现collection接口类型的集合中添加于该集合类型相同的元素

binarySearch(List<? extends Comparable<? super T>> list, T key) 二分查找指定元素,先排序在查找

sort(List<T> list) 排序

sort(List<T> list, Comparator<? super T> c) 排序,但同时需要用匿名类实现Comparator接口的比较方法

swap(List<?> list, int i,int j) 将指定位置的元素交换位置

copy(List<? super T> dest, List<? extends T> src) ; 注意 dest.size需大于等于src.size 将后面的集合复制进前面的集合中

emptyList() 返回为空的集合,不能添加数据

fill(List<? super T> list, T obj) 填充,将list中的元素全部填充为指定元素

max(Col lection<? extends T> col l) 返回集合中的最大值

min(Col lection<? extends T> col l) 返回集合中的最小值

replaceAl l(List<T> list, T oldVal, T newVal) 用新的值将集合中原来的指定值替换掉

reverse(List<?> list) 将集合逆序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值