java程序员修炼之道之集合框架

来源:互联网 发布:淘宝详情页怎么加视频 编辑:程序博客网 时间:2024/05/16 05:32

容器:

1,概念:javaAPI所提供的一系列类的实例,在用于在程序中存放对象。


2,容器的概念图:



3java集合框架包含的内容

集合框架都包含三大块内容:对外的接口,接口的实现,和对集合运算的算法。

①:对外的接口:在上面的容器概念图中,紫色的区域表示的是集合框架的对外接

口。例如:collectionsetlistmap

②:接口的实现:在上面的容器概念图中,黄色的区域表示的是集合框架的实现接

口,例如:HashMapHashSet等。

③:集合运算的算法:在一个实现了某个集合框架中的接口的对象身上完成某种用

用的计算方法,例如查找,排序等。详细查找Jdk帮助文档。


4,集合框架的区别:

从上图我们可以看出,集合框架共有两大类的接口:collectionMap

其中collection接口下又有两个子接口:setlist。所以我们通常说java集合框架共有

三大类接口,分别是setlist,和Map

共同点:都是集合框架的接口,都可以用来存储对象。

不同点:

①:collection接口存储一组不唯一(也就是允许重复),无序的对象。

②:set接口继承自collection接口,存储一组唯一(也就是不允许重复)、无序的

对象。

③:List接口继承自collection接口,存储一组不唯一(可以重复),有序(以元素

插入的次序来放置元素,不会重新排列)的对象。

④:Map接口存储一组成对的键----值对象。提供key---->value的映射关系。Map

中的key不要求有序,不允许重复。Value同样不要求有序,也允许重复。

5list集合

List集合允许有序和重复的对象。

List是按照插入的顺序来放置元素。

List的常用类有ArrayListLinkedList

①:ArrayList对数组进行了封装,实现了长度可变的数组。在内存中分配连续的

空间,优点就在于遍历元素和随机访问的效率高!

publicstaticvoidmain(String[] args) {

Dogouou=newDog("欧欧","黑狗");

Doghaha=newDog("哈哈","黄狗");

Listlist=newArrayList();

list.add(ouou);

list.add(haha);

System.out.println(list.size());

//遍历

for(int i = 0;i < list.size(); i++) {

System.out.println(((Dog)list.get(i)).getName());

}

System.out.println("删除");

list.remove(0);

for(int i = 0;i < list.size(); i++) {

System.out.println(((Dog)list.get(i)).getName());

}

}

注意,List的常用方法get(intindex)是返回指定索引处位置的元素。返回

值是Object类型。在使用钱需要进行强制转换。

②:LinkedList:采用的是链表的存储方式。优点在于插入,删除元素时效率比较

高,他提供了addFirst();addLast();removeFirst();removeLast();等方法,可以在

LinkedList首部或者结尾的地方进行删除和添加,所以这些方法使得LinkedList

以被用作堆栈(stack)或者队列(quece);

LinkedList的主要方法:

addFirst(Objo):向列表的首部添加元素。

.........

③:VectorArrayList的异同点:

相同点:也是表示可变长度数组的集合类。

不同点:Vector的执行效率低于ArrayList,因为Vector是线程安全的,而

ArrayList注重速度,非线程安全。

当数组长度需要增长时,Vector默认是增长数组长度的一倍,而

ArrayList只增长该数组长度的50%。有利于节省空间。



6Map:专门来处理键值对映射关系数据。

publicstaticvoidmain(String[] args) {

Mapmap=newHashMap<Object,Object>();

map.put("CN","中国");

map.put("USA","美国");

System.out.println(map.get("CN"));;

}

Map:的常用方法

Put(Objectkey,Object value):以键值对的方式进行存储

Get(Objectkey):根据键值来返回value值。如果键值不存在,返回null

ketSet();返回键的集合。

publicstaticvoidmain(String[] args) {

Mapmap =newHashMap<Object,Object>();

map.put("cn","中国");

map.put("usa","美国");

Scannerinput =newScanner(System.in);

System.out.print("请输入国家名称:");

StringcountryName= input.next();

for(int i = 0;i < map.size(); i++) {

System.out.println(map.get(countryName));

}

}