博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
head first java ( 16章 )
阅读量:6089 次
发布时间:2019-06-20

本文共 933 字,大约阅读时间需要 3 分钟。

java 有现成的数据结构可以使用

ArrayList不是唯一的集合, TreeSet, HashMap, LinkedList 等等都是集合,但是,

实际上还是 ArrayList 比较实用

- 泛型中重要的事情( <>代表泛型 )

  1. 创建ArrayList时你必须指定它所容许的对象, 就像单纯数组那样.

  2. 多态遇到泛型, 例如 ArrayList<Animal> = new ArrayList<Dog>(), ArrayList<Dog> = new ArrayList<Animal>()

     显然,上面蓝色的可以, 红色的不行, 你将Dog作为值传递给Animal, 这没有问题, dog 当然时动物, 但是反过来就不行了.

  3. 如何取用泛型里的元素

- ArrayList 类

  public class ArrayList<E> extends AbstractList<E> implements List<E> {

    public boolean add ( E o )

  }

  // 以上代码中的 E 可以用 T等任意字母替换

- 运用泛型的方法

 

 

 

  注意: 以上看着有点蒙,分解一下就好了(看下图)

 

  -- ArrayList 类定义( 所以该类得全称应该是 ArrayList<T>, 其中T是参数类型 )

  public class ArrayList<T> extends AbstractList<E> implements List<E>

- LIST, SET, MAP 

  List: 知道索引顺序,对付顺序是好手

  Set: 不准许重复

  Map: 用key来搜索

- 相等性问题

 

 

如果改写了 equals 方法就必须要改写 hascode方法

数组的类型是在运行期间检查的,但是集合类型检查只会发生在编译期间(不能多态)

所以,引入万用类型, 比如 T

public <T extends Animal> void takeThing(ArrayList<T> list)

public void takeThing(ArrayList<? extends Animal> list)

以上两行程序是等价的, 第一行的把类型提前了,更好看一点

转载地址:http://nspwa.baihongyu.com/

你可能感兴趣的文章
自动化运维工具ansible源码安装方法
查看>>
String
查看>>
03-3 BGP专有命令--联盟
查看>>
ExtJS4.2学习(二)Ext统一组件模型
查看>>
Linux系统管理命令--lsof
查看>>
iis下 ActiveSync插件无法访问(上)
查看>>
Puppet学习笔记之常用资源类型
查看>>
Android第三十五期 - 记住登录实现和Fragment的页面
查看>>
Configuring Basic EIGRP
查看>>
java枚举类型学习
查看>>
shell实现秒级crontab计划任务
查看>>
Excel2010重复打印标题行
查看>>
Internet Server Application Programming Interface
查看>>
DHCP原理解析及其在cisco上的配置
查看>>
H3C路由器上配置远程端口镜像(3种配置方式之1)
查看>>
分布式存储
查看>>
repadmin查看域控之间的复制状态
查看>>
自定义ORM系列(三)工具雏形及基本用法
查看>>
配置RIP、下一跳、静态、单臂示例
查看>>
DELL 2950配置Raid操作
查看>>