java基础学习笔记(三)

集合Collection
 Collection:是一个接口.定义了集合相关的抽象方法.
 Collection下面有两大子接口:List与Set
 
 集合中可以保存任意类型实例(集中中每个元素是任意类型实例)
 但一般而言,一个集合中的元素类型应该是一致的,否则容易造成
 混乱.
 
 List:元素[有序]且[可以重复添加]
 Set :元素[无序]且[不可以重复添加]
 
线性表:List
 ArrayList:List的实现类.
 ArrayList使用Object[]实现保存元素.
 ArrayList:Object[] + 线性表操作(增删改查)

 Vector:使用方式与ArrayList一样.
 Vector也实现了List接口
 
 ArrayList在java1.2以后出现
 ArrayList 线程不安全
 Vector    线程安全

List下另一个比较常用的实现类:LinkedList
LinkedList:链表(采用双向循环链表实现)
 API用法基本与ArrayList一样
 
 addFirst(Object o):add(0,Object o)向第一位追加元素
 addLast(Object o):add(Object o)
 removeFirst():
 removeLast():

散列表
  容量: 散列表中散列数组的大小
 散列运算: key的hashCode值进行的运算
     散列桶: 散列值相同的元素的线性集合
  加载因子: 散列数组的加载率,一般要求小于75%.
     元素数量/散列数组大小
  散列查找: 根据key的hashCode值进行计算,计算散列表下标
                      从而找到对应元素
 
HashMap 
 HashMap是以key-value的形式存放数据的
 key:可以是任意对象
 value:可以是任意对象
 key与value成对保存,在HashMap中以Entry对象保存
 key不允许重复!若以相同的key存放value,视为替换操作
 根据key进行散列计算(计算key的hashCode值得到散列数组下标)
  元素按照散列值进行排序(透明不可见).
 HashMap的默认容量为16.加载因子为0.75
 一旦我们存入的数据超过加载因子比值,HashMap会对散列数组进
  行扩容.以保证加载因子比值,提高查询效率

Set集合
 Collection的另一个子接口.
 Set集合特点:无序且元素不可重复添加
 常用实现类:HashSet
 HashSet:使用HashMap实现,其实就是使用HashMap的key列保存
         HashSet的元素.是一个只有key值的HashMap
=======================================================
链表结构
 链表结构,在链表中保存的每一个元素都应该是链表的一个"节点"
 节点连接节点组成的样子很像现实中的"链子",所以称之为链表
 
 单向链表:每个节点都知道它的下一个节点,不知道上一个节点.
 双向链表:每个节点即知道下一个节点也知道上一个节点.
 双向循环链表:在双向链表的基础上,将头节点与尾节点相连.形成
      一个封闭的链表
 
 那么在链表中,节点Node类应保存至少两个属性.一个是其连接的
 其他节点的地址,与当前节点需要保存的元素

==========================================================
泛型
 泛型是java1.5以后出现的新特性.作用是在编译器检查元素类型
 约束(运行期间不检查)
 
=========================================================
集合的迭代 
 集合的迭代是对集合元素的一种遍历算法
 
 java中使用Iterator(迭代器)来描述迭代模式操作
 
 Iterator中的迭代方法是专门为while循环设计的
 
 Iterator实例可以通过任何的[集合对象]获取.
 集合对象:Collection的子类对象
 
 迭代方法:
     next():移动游标到下一个元素,并返回它
  hasNext():检查当前集合中是否还有元素,若有返回true否则
              返回false

 迭代器中的游标:
  迭代器实际上就是集合的元素序列视图.它还包含一个游标,
  游标默认指向视图第一个元素之前.
=========================================================
Collections 集合工具类
 与数组的工具类Arrays类似,Collections提供了对集合操作的一
 写比较便捷的方法.

========================================================
Comparable和Comparator

Comparable是一个接口,实现了此接口的类是可比较的.
      实现此接口必须要实现其中的一个抽象方法:CompareTo()
   
    CompareTo()方法返回一个int值,这个值的没有具体数值,
     只要描述范围就可以:整数表示大,负数表示小,0表示相等

    CompareTo()方法在比较时,应注意与equals()方法呼应,
     就是equals()方法返回true时,CompareTo()方法要返回0

java中很多的类都实现了这个接口,例如String

Comparator比较器
 Comparator也是一个接口.需要实现一个抽象方法compare().
 Comparator经常伴随着Collections的sort方法使用.
 
 Collections的sort()方法
  sort(List list):按照List元素的升序排序
  
  sort(List list,Comparator com):根据比较器的规则比较
            List中的元素.升序排序

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值