zoukankan      html  css  js  c++  java
  • Java集合概述

    概览

      Java集合也叫容器,可以容纳其它的Java对象,始于JDK1.2.优点是:

      1.降低编程难度

      2.提高程序性能

      3.提高API间的互操作性

      4.降低学习难度

      5.降低设计和实现相关API的难度

      6.增加程序的重用性

      Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。很多时候拆包装和解包装能够自动完成。这虽然会导致额外的性能和空间开销,但简化了设计和编程。

    泛型

      java容器能够容纳任何类型的对象,这一点是通过Java的泛型机制完成的。Java泛型是是编译器为我们提供的一个语法糖,在编译的时候对相应的字符串替换,本身不需要jvm虚拟机的支持。实质上Java的单继承机制才是保证这一特性的根本,因为所有的对象都是Object的子类,容器里只要能够存放Object对象就行了。 事实上,所有容器的内部存放的都是Object对象,泛型机制只是简化了编程,由编译器自动帮我们完成了强制类型转换而已。

      

    //JDK 1.4 or before
    ArrayList list = new ArrayList();
    list.add(new String("Monday"));
    list.add(new String("Tuesday"));
    list.add(new String("Wensday"));
    for(int i = 0; i < list.size(); i++){
        String weekday = (String)list.get(i);//显式类型转换
        System.out.println(weekday.toUpperCase());
    }
    //JDK 1.5 or latter
    ArrayList<String> list = new ArrayList<String>();//参数化类型
    list.add(new String("Monday"));
    list.add(new String("Tuesday"));
    list.add(new String("Wensday"));
    for(int i = 0; i < list.size(); i++){
        String weekday = list.get(i);//隐式类型转换,编译器自动完成
        System.out.println(weekday.toUpperCase());
    }

    接口和实现类

      接口:

          java集合统一设计,定义了14个接口。关系如图:

        

         Map接口没有继承自Collection接口,因为Map表示的是关联式容器而不是集合。但Java为我们提供了从Map转换到Collection的方法,可以方便的将Map切换到集合视图。 上图中提供了Queue接口,却没有Stack,这是因为Stack的功能已被JDK 1.6引入的Deque取代。

        

      实现:

        一些常见类的实现如图:

        

     迭代器:

        java集合的迭代器,为我们提供了遍历容器中元素的方法。只有容器本身清楚容器里元素的组织方式,因此迭代器只能通过容器本身得到。每个容器都会通过内部类的形式实现自己的迭代器。

        

    //visit a list with iterator
    ArrayList<String> list = new ArrayList<String>();
    list.add(new String("Monday"));
    list.add(new String("Tuesday"));
    list.add(new String("Wensday"));
    Iterator<String> it = list.iterator();//得到迭代器
    while(it.hasNext()){
        String weekday = it.next();//访问元素
        System.out.println(weekday.toUpperCase());
    }
    //使用增强for迭代
    ArrayList<String> list = new ArrayList<String>();
    list.add(new String("Monday"));
    list.add(new String("Tuesday"));
    list.add(new String("Wensday"));
    for(String weekday : list){//enhanced for statement
        System.out.println(weekday.toUpperCase());
    }

      

      

  • 相关阅读:
    数据绑定表达式语法(Eval,Bind区别)
    使用博客园的第一件事 自定义主题
    sql2000 跨服务器复制表数据
    使用UpdatePanel 局部刷新出现中文乱码的解决方法!!
    MMC不能打开文件MSC文件
    sql 日期 、时间相关
    loaded AS2 swf call function in AS3 holder
    Rewrite the master page form action attribute in asp.net 2.0
    100万个不重复的8位的随机数
    flash 中实现斜切变型
  • 原文地址:https://www.cnblogs.com/goxcheer/p/9595006.html
Copyright © 2011-2022 走看看