集合

集合

* 一组数据结构工具

* 数据结构:

  以某种结构,存放一组数据

java.util

--------------------------------------------------------------------------------

Collection 接口

   |List接口

  |ArrayList

|LinkedList

   |Set 接口

|HashSet

|TreeSet

Map 接口

|HashMap

|TreeMap

Iterator 接口

Collections 工具类

LinkedList

java.util.LinkedList

= = = = = = = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

* 双向链表

* 两端效率高

 

创建对象

-----------------------------------------------------------------------------------------------------

LinkedList list = new LinkedList();

方法

-------------------------------------------------------------------------------------------------------

add(数据)                              添加数据

add(int index,数据)                   在指定位置插入数据

addFirst(数据)                       将指定元素插入此列表开头

addLast(数据)                       将指定元素插入此列表结尾

getFirst()                           返回此列表的第一个元素

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

removeFirst()                        除并返回此列表的第一个元素

removeLast()                        并返回此列表的最后一个元素

FIFO 操作 First In First Out,队列操作

offer(数据) - addLast

peek() - getFirst

poll() - removeFist

LIFO 操作 Last In Fisrt Out,栈操作

push() - addFirst

pop() - removeFist

get(int index)       获得指定位置的值

contains(数据)      判断列表中是否存在与指定数据相等(equals)的值

set(int index,数据)   将指定位置设置为新值

size()              获取列表中数据的数量

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

remove(数据)       从此列表中移除首次出现的指定元素(如果存在)

clear()             清空列表

iterotar            获取迭代器实例

附:求第n个丑数  代码

private static long chouShu(int n){

long r=0;

LinkedList<Long> list3=new LinkedList<Long>();

LinkedList<Long> list5=new LinkedList<Long>();

LinkedList<Long> list7=new LinkedList<Long>();

//向每个集合中添加最小值

list3.add(Long.valueOf(3));

list5.add(Long.valueOf(5));

list7.add(Long.valueOf(7));

for(int i=1;i<=n;i++){

//取出每个集合中的最小值

long a=list3.getFirst();

long b=list5.getFirst();

long c=list7.getFirst();

r=Math.min(a, Math.min(b, c));

if(r==a)list3.removeFirst();

if(r==b)list5.removeFirst();

if(r==c)list7.removeFirst();

list3.add(r*3);

list5.add(r*5);

list7.add(r*7);

}

return r;

}

 

ArrayList

java.util.ArrayList

= = = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = =

* 内部用数组存放数据

* 访问任意位置效率高

* 添加或删除数据效率可能降低

 

创建对象

-------------------------------------------------------------------------------------------------------

1. ArrayList list = new ArrayList();      //内部数组长度是10

2. ArrayList list = new ArrayList(100);   //内部数组长度是100

* ArrayList VS LinkedList

*) 如果只在两端操作数据,用LinkedList

方法

-----------------------------------------------------------------------------------------------------

* LinkedList 相同   但是没有两端操作数据的方法

HashMap

java.util.HashMap

= = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = =

* 哈希表、散列表

* 存放“键—值对”数据

* 作用:快速查找数据

* 键:

*) 不重复

*) 无序

*) 需要重写hashCode() equals()方法

*) equals()相等,hashCode() 必须相等

*) hashCode() 相等,equals() 不一定相等

 

创建对象

----------------------------------------------------------------------------------------------------

HashMap map = new HashMap();

方法

----------------------------------------------------------------------------------------------

返回值

方法名

描述

 

put(k,v)

放入键值对数据

V

get(k)

用键获取对应的值

V

remove(k)

移除指定的键和它的值,并返回对应的值

boolean 

containsKey(key)

是否包含指定键的映射关系

boolean 

containsValue(value)

是否包含指定的值

int

size()

有多少数据

void

clear()

清空

Set<K>

keyset()

获得一个Set 类型集合,包含所有的键

Set<Map.Entry<K,V>>

entrySet()

获得一个Set 类型集合,包含所有entry

Collection

values()

获得集合,包含所有的值

 

哈希算法、散列算法

---------------------------------------------------------------------------------------------------

放入数据

-------------------------------------------------------------------------------------------------

1. key.hashCode()或得哈希值

2. 用哈希值计算下标值index

3. 将keyvalue 封装成Entry 对象

3.1 如果达到一定的负载数,数组的容量翻倍

4. 将Entry 对象放入index 位置

4.1 index 位置没有数据,直接放入

4.2 index 位置有数据 要依次用equals() 比较每个键是否相等

4.2.1 找到相等的,覆盖值

4.2.2 没有找到相等的,链表连在一起

查找数据

----------------------------------------------------------------------------------------------------

1. key.hashCode() 获得哈希值

2. 用哈希值计算下标值 index

3. 依次用 equals() 比较每个键是否相等

3.1 找到相等的,返回对应的值

3.2 没有找到相等的,返回null

TreeMap

java.util.TreeMap

= = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = =

* 红黑树(二叉树)

* 存放 “键—值队”

* 快速查找数据

* 键:

*) 不重复

*) 有序

*) 排序

*) 实现 Comparable 接口

*) 外接 Comparator 比较器

 

创建对象

---------------------------------------------------------------------------------------------

1. TreeMap map = new TreeMap();

2. TreeMap map = new TreeMap(比较器);

方法

--------------------------------------------------------------------------------------------------

* HashMap 相同

 

 

HashSet

java.util.HashSet

= = = = = = = = = = == = = = = = = == = = = = = = = = = == = = = = = = =

* 哈希算法的数据集

* 不重复

* 无序

* 内部用 HashMap 的键这一列来存放数据

创建对象

-------------------------------------------------------------------------------------------------------------------

HashSet  set = new HashSet();

方法

----------------------------------------------------------------------------------------------------------

add(数据)

remove(数据)

size()

iterator()

contains(数据)

clear()

 

 

TreeSet

java.util.TreeSet

=============================================================

* 不重复

* 有序

* 内部用TreeMap 的键这一列存放数据

* 存放的数据比较大小

*)  Comparable

*) Comparator

创建对象

------------------------------------------------------------------------------------------------

1) TreeSet set = new TreeSet();

2) TreeSet set =new TreeSet(比较器);

方法

-----------------------------------------------------------------------------------

hashNext()

next()

remove()    移除刚刚取出的数据

Collections

java.util.Collections

=============================================================

* 集合工具类

方法

---------------------------------------------------------------------------------------------------

addAll(Collection,1,2,3,…)    向指定集合,加入多个数据

binarySearch(List,数据)  二分法查找,List集合中的数据,必须是从小到大  返回数据的下标位置,找不到返回无意义的值

fill(List,数据)    将现有数据,全部替换为指定的数据

max(Collection)    根据元素的自然顺序 返回给定 collection 的最大元素

max(Collection,Comparator)    外接比较器

min(Collection)    根据元素的自然顺序 返回给定 collection 的最小元素

min(Collection,Comparator)    外接比较器

reverse(List)  反转指定列表中元素的顺序

shuffle(List)  打乱列表的顺序

sort(List)     对指定的列表按升序排序

sort(List,Comparator)  外接比较器  排序

swap(List list,int I,int j)    i , j 位置交换  在指定列表的指定位置处交换元素

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值