Java基础之集合框架详解(一)

集合框架的相关定义

集合:即存储对象的容器。

框架:即类库的集合。

集合框架:即用来表示和操作集合的统一框架,由相关的接口、实现类和一些帮助程序员完成编程的算法。

集合的作用:

  • 在类的内部,对数据进行组织
  • 简单而快速的搜索大数量的条目
  • 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素
  • 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型

集合与数组的区别:

  • 集合长度是可变的,数组长度是固定不变的
  • 集合中只能存储对象,不能存储基本数据类型,而数组中两者都可存储
  • 集合中存储的对象可以是任意类型的,而数组中只能存储同一类型的对象或同一基本类型的数据

相关说明:

  • 集合中可以存储任意类型的对象是因为,对象存入集合中都变成了Object类型,所以取出时要注意类型转换,当然也可以通过添加泛型来指定集合只能装载某一特定类型的对象。
  • 注意集合中只能存储对象,而当我们在集合中添加整形等基本数据类型时仍然能够编译成功,这是因为在JDK1.5以后添加了自动装箱拆箱的机制,int类型被自动装箱成为Integer类型,以此类推。

集合框架的构成

由于集合框架中的很多类功能是相似的,所以设计了大量接口来规范类,最重要的是两个根接口,Collection接口和Map接口

Collection接口下面又有三个重要的子接口:List接口、Queue接口、Set接口,这三个子接口对应着三个重要的实现类:ArrayList、LinkList、HashSet

Map接口对应一个重要的实现类:HashMap

Collection接口

Collection接口中的一些共性方法,主要是增删改查:

添加方法:

- boolean add(Object e)—— 一次只能添加一个元素

- boolean addAll(Collection< extends E> c)—— 将一个参数容器中的所有元素添加到当前容器中

删除方法:

- boolean remove(Object e) 删除一个指定对象

- boolean removeAll(Collection<> c) 删除指定Collection中和本Collection中相同的元素

- void clear ():直接将集合中的元素清空

判断方法:

- boolean contains (Object)是否包含指定元素

- boolean containsAll(Collection<> c) 是否包含指定容器中的元素

- boolean imEmpty(): 是否有元素

获取元素个数:

- int size (),获取元素的个数

取交集:

- boolean retainAll(Collection<> c) 保留和指定collection集合中相同的元素,不相同的元素会被删除

将集合转成数组:

- Object[] toArray()

取出元素的方法(重点掌握)

- Iterator iterator()

迭代器Iterator

迭代器是一种设计模式,它是取出集合中元素的方式的一个对象,内置在容器中,可以通过iterator()方法完成,该方法返回一个Iterator类型对象。

将每一个容器中的取出方式进行了封装。并对外暴露。这样无论是什么容器或者数据结构,只要内部取出方式实现了Iterator接口,都可以通过该接口取出这些容器中的元素。

它的出现,将容器的取出方式和容器的数据结构分离,降低了耦合性。而取出方式因为直接在访问容器中的元素,并依赖具体的数据结构,所以被定义在了容器中。通过内部类在实现Iterator接口。

用法比较简单:

- 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

- 使用next()获得序列中的下一个元素。

- 使用hasNext()检查序列中是否还有元素。

- 使用remove()将迭代器新返回的元素删除。

例子:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionText {

    public static void main(String[] args) {

        Collection<String> collection = new ArrayList<String>();
        collection.add("a");
        collection.add("b");
        collection.add("c");
        collection.add("d");
        collection.add("e");

        Iterator<String> iterator = collection.iterator();

        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

    }

}

技巧性掌握

明确具体集合对象名称的后缀:

- 如果后缀是List,都所属于List体系,通常都是非同步的。

- 如果后缀是Set,都所属于Set体系通常都是非同步的。

- 这些体系中的其他子类对象,后缀不是所属接口名的,一般都是同步的。这在常用子类对象中通用。

明确数据结构:

- 对于jdk1.2版本的子类对象。后缀名是所属的体系。前缀名就是数据结构的名称。

- ArrayList:看到Array,就要明确是数组结构;查询快

- LinkedList:看到Link,就要明确链表结构,就要想到add get remove和 first last结合的方法。增删快

- HashSet:看到hash ,就要明确是哈希表,查询快,而且所存储的对象具有唯一性。就要想到元素必须覆盖hashCode方法和 equals方法。

- TreeSet:就看到Tree,就要明确是二叉树,可以对元素排序;就要想到两种排序方式:自然排序:Comparable接口,覆盖compareTo(一个参数)java.lang。比较排序:Comparator接口,覆盖compare(两个参数):java.util。判断元素唯一性的依据就是比较方法的返回结果 return 0;

参考文章:

http://blog.csdn.net/watermusicyes/article/details/7985381

http://www.cnblogs.com/amboyna/archive/2007/09/25/904804.html

http://developer.51cto.com/art/201107/274951.htm

时间: 2024-10-07 11:21:03

Java基础之集合框架详解(一)的相关文章

Java基础之集合框架详解(三)Set篇

相关定义 作为Collection接口的重要子接口,Set接口是一个不包含重复元素,且元素排列无序的集合,也被称为集. 注意:不包含重复元素的含义,更确切的讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素. Set接口的方法和Collection接口的方法大体相同,也就是说Set接口不像List接口那样可以通过索引或去元素,只能通过Iterator()方法获取迭代器进行迭代. Set中的add方法不同于Collection接口,有一个

Java基础之hashCode方法详解

想要明白hashCode的作用,必须要先知道java中的集合.(不明白的请看Java基础之集合框架详解(二)List篇和Java基础之集合框架详解(三)Set篇) Java中的Collection集合有两类,一类是List,另一类是Set,前者集合内的元素是有序的,元素可以重复:后者元素无序且元素不可重复.而我们通常使用Object.equals方法来判断两个元素是否重复.即当我们想查找一个元素中是否包含某个对象时,就是逐一取出每个元素与要找的元素进行比较,当发现某个元素与要查找的对象进行equ

另外几种Java集合框架详解续

另外几种Java集合框架详解续 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs fastutil库优于Trove库的地方:Trove库已经三年未更新了,属于非活跃的开源项目:而fastutil一直在更新.fastutil有更丰富的特性,支持超大的集合(大于2^32,即4GB的集合),文档也更丰富. fastutil是一个开源的Java集合框架的扩展,它继承了Java Collection Framework,提供了数

java基础之HTTP协议详解

关于本文,是听了某个老师的课程之后倍感自己对HTTP了解不够深入,因此决定写此博文. 首先,可以参考此文:http://blog.csdn.net/gueter/article/details/1524447 第一部分:浏览器与服务器通信过程: 第二部分:HTTP请求介绍: 第三部分:HTTP协议响应 java基础之HTTP协议详解

JAVA基础之集合框架

集合框架(collections framework) 首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能).Java中的集合框架定义了一套规范,用来表示.操作集合,使具体操作与实现细节解耦. 其实说白了,可以把一个集合看成一个微型数据库,操作不外乎"增删改查"四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这个类了. 设计理念 主要理念用一句话概括就是:提供一套"小而美"的API.API需要对

Java集合框架详解(全)

一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下: 1)数组长度不可变化而且无法保存具有映射关系的数据:集合类用于保存数量不确定的数据,以及保存具有映射关系的数据. 2)数组元素既可以是基本类型的值,也可以是对象:集合只能保存对象. Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:Li

java集合框架详解

前言: 数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework). Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应

java集合框架详解(一)

1.为什么有java集合框架 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的接口.类来实现基本的数据结构.这些类均在java.util包中.在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework). Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对

JAVA基础接口集合框架

接口--------------------------------------------------------------------------------一.接口(是一种规范)1.接口名/接口文件与类类似,也是用.java文件编写2.关键字 interface 接口名命名规范与类名相同 习惯上可以使用I开头表示3. 接口额访问修饰符只能使用public和default修饰不能使用private和protected在接口中默认缺省为public4.接口中的所有属性只能为公开的静态的常量而