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移除元素
未完待续。。。。。。。。。。。。