集合和泛型

集合和泛型

集合的API

分支主题 4

集合

List(interface)

  • ArrayList

    • 无自动字母排序
    • 没有sort()
    • 优点:成本低,插入末尾或者指定位置
  • LinkdList

  • Vector

Set(interface)

  • HashSet

    • 如何判断相等

      • 依据hashCode()

        • 没被覆盖时,依据内存位置计算

          • 若两对象的hashcode相等,则再调用equals()来判断是否真的相等
          • 若hashCode()没有重写过,则堆上的两个对象永远不可能相等
          • 若equals()没有重写过,则堆上的两个对象永远不可能相等,因为不同的对象有不同的字节组合
        • 被覆盖时,往往用于判断(数据上)相同的对象

          • 例如对象中的字符、数值等
        • a.equals(b) 必须与a.hashCode() == b.hashCode()等值

          • 但a.hashCode() == b.hashCode()不一定要与a.equals(b)等值
      • 引用相等性

        • 堆上同一对象的两个引用:使用==判别
      • 对象相等性

        • 堆上的两个不同对象在意义上(数据上)是相同的
    • 缺点:无序

      • 想要有序则使用TreeSet
  • TreeSet

    • 防重复上与HashSet相同,且有序

    • 同sort()一样自动字母排序

      • = Collections.sort(List list)
    • 其元素必须是Comparable

      若不然TreeSet不知道如何排序

      • 方法一实现Comparable:将对象Book implement Comparable{String title;…},…实现public int compareTo(Object b){Book book = (Book) b; return title.compareTo(book.title);}
      • 方法二重载Comparator,用于创建该参数的TreeSet
    • 缺点:成本高,插入时需要查找位置再插入

  • LinkedHashSet

Map(interface)(没有继承Collection)

Key-Value

  • HashMap
  • TreeMap
  • LinkeHashMap
  • Hashtable

泛型(generic)<>

主要目的是让你能够写出有类型安全性的集合
例如:ArrayList,此处的String就表明了ArrayList的内容只能是String,而不会是其他类型
类上使用泛型(class后),方法上使用泛型(void等返回类型前)
泛型观点:extend代表extend和implement

类型参数:E:与集合有关;T:否则

extends

  • extends

    • 代表“是一个”
  • implements

other

Abstract 抽象

  • 抽象类

    • 1、不能被实例化
      2、可通过继承抽象类来实现抽象类的子类的实例化
  • 抽象方法

    • 1、抽象方法的类必定是抽象类
      2、抽象方法只是声明,没有{}
      3、构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
      抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

万用字符 wildcard:这样就可以传进Animal的子类了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值