设为首页 加入收藏

TOP

JAVA学习笔记--初识容器类库(一)
2017-10-12 11:22:48 】 浏览:8956
Tags:JAVA 学习 笔记 初识 容器

一、前言

  JAVA中一切皆为对象,因而,持有对象显得尤为重要。

  在JAVA中,我们可以通过创建一个对象的引用的方式来持有对象:

    HoldingObject holding;

  也可以创建一个对象数组来持有一组特定类型的对象:

    HoldingObject holding  = new HoldingObject[10];

  但是,一个对象引用只能持有一个对象,一个对象数组只能持有固定数量且为某一特定类型的对象;然而,我们常常会遇到这种情况,在编写程序时,我们并不知道要创建多少个对象,甚至不知道要创建的对象的类型,因此,我们需要能够在任意时刻任意位置创建任意数量的对象,这是上面两种方法所做不到的。JAVA实用类库提供了一套相当完整的容器类来解决这个问题,其中的基本类型是List,Set,Queue,Map,我们称之为“容器”。

 

二、容器的分类

   

  如上图所示,是一个简单的容器分类。可以看到,其实只有两种容器Collection和Map,而Collection又可以分为List,Set和Queue。它们各有两到三个实现,如:ArrayList,LinkedList是List的实现;HashMap,TreeMap是Map的实现。在上图中,常用的容器用黑色粗线框表示;点线框表示接口;实线框表示具体的类;空心箭头的点线表示一个特定的类实现了一个接口;实心箭头表示某个类可以生成箭头所指向类的对象。  

1)Collection:

  Collection保存一个独立的元素序列, 这些元素序列都服从一条或多条规则。Collection是一个接口,它表示一组对象,这些对象也被称为collection的元素,一些collection允许有重复元素,另一些则不允许。JDK不提供此接口的任何直接实现,它提供更具体的子接口实现(List,Set,Queue),此接口常用来传递collection,并在需要最大普遍性的地方操作这些collection。下面简单列出Collection的一些方法(截图自J2SE6_API):

 

a)List:必须按照插入的顺序保存元素

  List是有序的collection,此接口的用户可以对列表中的每个元素的插入位置进行精确控制,用户可以根据元素的整数索引(在列表中的位置)来访问元素,并搜索列表中的元素。List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。List允许在它被创建之后添加元素、移除元素,或者自我调整尺寸,这正是它的价值所在:一种可修改的序列。有两种类型的List实现:

  ArrayList:随机访问元素时比较快,但是插入和移除元素时比较慢;

  ArrayList有三种构造方法:

ArrayList();       // 构造一个初始容量为10的空列表

ArrayList(int x);    // 构造一个初始容量为x的空列表

ArrayList(Collection<? extends E> c);  // 构造一个包含指定collection的元素的列表,这些元素是按照collection的迭代器返回它们的顺序排列的

 

  下面用一个简单的例子来介绍一下ArrayList的基本操作:

package com.tongye.holding;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class HoldObject {    
    public static void main(String[] args){
        Random rand = new Random(47);
        Circle circle = new Circle();
        Square square = new Square();
        Triangle triangle = new Triangle();
        Rectangle rectangle = new Rectangle();
        
        // 创建List实例
        List<Integer> list1 = new ArrayList<Integer>();    // 创建一个只能存储int类型对象的列表
        List<Shape> list2 = new ArrayList<Shape>();        // 创建一个只能存储Shape类型对象的列表
        List list3 = new ArrayList(4);                    // 创建一个初始容量为4的列表,没有指定存储的类型        
        
        // 向列表list1中添加元素
        for(int i = 0;i < 10;i++)
            list1.add(rand.nextInt(20));                // add(E e)方法,将指定元素添加到此列表的尾部        
        for(Integer i : list1)                            // 所有的collection都可以用foreach进行遍历
            System.out.print(i + " ");
        System.out.println("");
        
        // 用subList方法截取一部分list1的视图
        List<Integer> list4 = list1.subList(3, 8);        // subList(int fromIndex,int toIndex),返回列表中
                                                        // 从fromIndex(包括)到toIndex(不包括)之间的部分视图
        for(Integer i : list4)                            
            System.out.print(i + " ");
        System.out.println("");
        
        // 向列表list2中添加元素
        list2.add(circle);                                // 向列表中添加对象
        list2.add(square);
        list2.add(triangle);
        list2.add(1,rectangle);                            // add(int index,E e)方法,向列表的指定位置插入指定元素        
        for(Shape i : list2)                            // 所有的collection都可以用foreach进行遍历
            System.out.println(i);
        System.out.println(list2.isEmpty());            // isEmpty()方法,检查列表中是否有元素,没有元素则返回true
        System.out.println(list2.contains(circle));        // contains()方法用于检查列表中是否含有指定元素,有则返回true
        System.out.println(list2.indexOf(square));        // indexOf()方法,用于返回元素在列表中的索引号
        list2.get(1).showShape();                        
        list2.remove(rectangle);                        // remove(Object o)方法,删除列表中首次出现的指定元素
        list2.get(1).showShape();
        list2.remove(1);
        list2.get(1).showShape();                        // remove(int index)方法,删除列表中指定索引处的元素
        
        // 向list3中添加元素
        list3.add(100);
        list3.a
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JAVA学习笔记--初识容器类库 下一篇线程池

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目