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

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

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

  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/lyon2014/p/4796313.html
Copyright © 2011-2022 走看看