java容器

java容器和c++stl容器类似

java

容器基本类型:List,Set,Queue,Map这几个又称集合类

容器特性:可以自动调整自己的尺寸,所以你可以把任意数量的对象放入数组中而不用担心其会溢出

容器类各个类型特性:1.List按照插入顺序保存元素 例如 

有一个gerbils数组

gerbils.add(g0);
gerbils.add(g1);
gerbils.add(g2);
gerbils.add(g3);
gerbils.add(g4);

遍历如下

for(int i=0;i<gerbils.size();i++)
{
System.out.println(gerbils.get(i).hop());
}

其输出顺序为插入顺序 g0,g1,g2,g3,g4


 2.Set:值唯一

列如:

有一个Set类型对象 s

s.add(g0);

s.add(g1);

这是正确的

 

列如

s.add(g0);

s.add(g0);

这是错误的

 3.Queue按照队列规则来确定对象产生的顺序,先进先出(FIFO)

列如Queue的一个对象 q

q.offer(1);

q.offer(2);

q.offer(3);

System.out.println(q);

输出

[1, 2, 3]

4.map一组成对的键值对对象,值可重复,map按照hash散列存法,当值重复时会向后移动

例如有一个map对象map<String,String>m;

               m.put("1", "2");
m.put("2", "3");
m.put("2", "3");
for(int i=0;i<m.size();i++)
{
//System.out.println(m.containsKey("2"));
System.out.println(m.get("2"));
}

这几种类型是java容器给的接口时抽象的,创建时应该创建继承该接口的实例

list 子类 ArrayList、LinkList

set子类HashSet、LinkedHashSet、TreeSet

map子类 HashMap、TreeMap、LinkedHashMap

首先讲下list

list有两种 ArrayList和LinkedList

ArrayList擅长随机访问元素但插入和移除元素较慢

而LinkedLIst 随机访问元素比较慢,但是在list中间插入和删除元素代价比较小,特性集比ArrayList更大

根据不同问题可以采用不同的list

set 值唯一,常用来测试其归属性,你可以很容易的询问某个对象是否在某个set中,所以查找就成为了Set中最重要的操作,因此通常会选择一个HashSet来实现,因为HashSet对快速查找进行了优化

Set 具有与Collection 一样的接口,Set等同于Collection,只是其行为不同(这是继承与多态的典型应用).

HashSet 维护顺序与TreeSet或LinkListHashSet都不同,因为其存储方式不同,HashSet采用的是散列函数,TreeSet采用红黑树、LinkedHashList也使用了散列,但看起来是用了链表来维护元素的插入顺序.

Map与其他数组一样,很容易拓展到多维假设你有个客户他又多个银行卡,你要帮他理财你所需要的只是一个Map<person,List<bankcard>>.

Queue子类 LinkedList(注意和List中的子类Linkedlist进行区分),priorityQueue(优先队列,先进先出).

Queue的主要方法 

offer()插入一个元素

peek()获取对头

remove()移除对头

List主要方法

add()插入元素

get()获取元素

remove移除元素

未完待续。。。。。。。。。。。。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值