zoukankan      html  css  js  c++  java
  • thinkinginjava学习笔记10_容器

    Java中并没有像Perl、Python、Ruby那样对容器有直接的支持,但是可以依靠容器类来完成相同的工作;

    泛型

    使用一个ArrayList对象可以保存一系列的对象,如: ArrayList apples = new ArrayList(); 申明一个ArrayList对象apples,接下来可以往apples中添加对象:apples.add(object),也可以根据索引获取对象:apples.get(index),此时,放置的对象都是Object类型的,这是不安全的类型,因为不能保证所有的对象都使用同一个接口,当里面放置了两种不同类型的对象时,就会产生某些问题;

    为了使用更加安全的容器,需要用到泛型,如示例代码中展示的那样,使用一对尖括号来表示泛型:ArrayList<Apple> apples = new ArrayList<Apple>();此时,如果往该容器中添加其他类型的对象,编译器就会发现并且报错;同时可以看到,泛型支持向上转型;

    容器的类型

    容器可以分为两种:

    1. Collection,单独元素的序列对象,包括:List、Set、Queue;

    2. Map,一组成对的“键值对”对象;

    容器类型使用中,创建一个具体类的对象,然后转型为对应引用,之后针对该接口进行编程;如:ArrayList 是List的子类,可以申明:

    List<Apple> apples = new ArrayList<Apple>();

    此时ArrayList被向上转型为List,保证只用到List中的接口而没有用到ArrayList的特有接口的话,这样的申明可以让对象的具体类变化更加方便,如更改为LinkedList:

    List<Apple> apples = new LinkedList<Apple>();

    而不用更改其他的任何代码,因为所有的工作都是在List的接口上进行的;

    所有的Collection都支持foreach语法;

    通过Collection.addAll()方法可以添加一个Collection对象来完成初始化;用新建一个空的Collection对象,然后再用Collections.addAll()方法来添加对象更加快捷,是首选的初始化方式;如示例代码中,新建Collections.addAll将更多的元素添加到第一个参数:collection对象中;同样的Arrays.asList()可以更加快捷地生成ArrayList对象;

    Arrays.asList()可能会产生一些问题,并不能根据左边的式子进行向上转型,需要显示申明类型,如:Arrays.<Snow>asList();来进行准确的操作;

    List

    List类包含两种类型:

    ArrayList:在数组中随机访问元素速度较快,但是插入元素和删除元素较慢;

    LinkedList:访问元素速度较慢,但是插入和删除元素较快;

    具体的方法查看手册:http://docs.oracle.com/javase/7/docs/api/java/util/List.html

    LinkedList提供Queue和Stack的支持;由于设计上的缺陷,最好取消使用Stack,而使用LinkedList代替;

    Map

    Map类包含:

    HashMap:设计用来快速访问,其中键是无序保存;

    TreeMap:键始终处于排序状态,访问速度较慢;

    LinkedHashMap:保持元素的插入顺序,同时提供快速的访问能力;

    总结

    这章讲的有的碎,比较好的是下面的分类图:

    NewImage

    其中虚线框表示接口,实线框表示具体类,黑线框是比较常用的容器;空心箭头表示一个特定的类实线一个接口,实心箭头表示某个类可以生成箭头所指向类的对象;

    具体的就看文档吧,感觉更加清晰并且具体一些

  • 相关阅读:
    [示例] Firemonkey 面包屑导航
    [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)
    [修正] Firemonkey SpeedButton 鼠标移开按钮后 IsPressed 为 False 的问题
    [笔记] FireDAC DataSet 导入及导出 JSON
    [笔记] 升級到 Delphi 10.2 Tokyo 笔记
    [示例] 用代码设置 ListView 颜色 (只适用 Win 平台,无需修改官方源码)
    [上架] iOS 上架更新版本号建议
    [教学] Delphi IDE 文件搜寻功能
    Loadrunner相关问题
    数据导出excel数据丢失
  • 原文地址:https://www.cnblogs.com/lyon2014/p/4796313.html
Copyright © 2011-2022 走看看