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());
    }

      

      

  • 相关阅读:
    163源
    nginx限制某个IP同一时间段的访问次数
    CentOS_6.5安装Nginx+PHP+MySQL
    php安装,mysql安装
    linux卸载php
    nginx下php频繁卡死502
    python与selenium自动化基础-xlrd读取数据,Excel生成报告
    python与selenium自动化基础-测试多账户
    python与selenium自动化基础-测试用例错误处理及生成log
    python与selenium自动化基础-测试用例数据数据分离
  • 原文地址:https://www.cnblogs.com/goxcheer/p/9595006.html
Copyright © 2011-2022 走看看