java基础-集合

集合数组的区别
  数组定长
  集合变长

  数组存储基本类型,也存储引用类型
  集合只存储引用类型,不存储基本类型

  数组存储单一类型
  集合存储任意类型的对象

 Collection接口方法
 3.1 add 将元素存储到集合
 3.2 isEmpty 判断集合有没有元素
 3.3 contains 判断集合中是否包含这个元素
 3.4 size 返回集合长度
 3.5 iterator 返回迭代器接口实现类对象

 迭代器用法
 4.1 集合方法iterator返回迭代器接口实现类对象
 4.2 迭代器方法hasNext判断有没有下一个元素
 4.3 next方法取出集合元素
 4.4 注意事项
   |-- 不要多次 next,只能一次
   |-- 没有元素了,再次获取,出现没有元素被取出异常
   |-- 迭代中不能使用集合方法改变集合长度,否则出现并发修改异常

 List接口特点,特有方法
 5.1 接口特点
  |-- 有序
  |-- 重复
  |-- 索引


 5.2 特有方法(带索引)
  |-- add
  |-- get 根据索引获取元素
  |-- set
  |-- remove

  |-- sublist


 List特有迭代器
 1.1 List接口方法listIterator返回特有迭代器对象
 1.2 ListIterator接口方法
   |-- add
   |-- set
   |-- remove
   |-- hasPrevious
   |-- previous


 ArrayList自身特性
 |-- 底层可变数组实现
 |-- 默认10个位置,每次增长50%
 |-- 线程不安全集合,运行速度快
 |-- 查询快,增删慢

 Vector自身特性
 |-- 底层可变数组实现
 |-- 默认10个位置,增长100%
 |-- 线程安全集合,运行速度慢
 |-- 查询快,增删慢

 LinkedList自身特性
 |-- 底层链表实现,对象地址记录
 |-- 线程不安全集合,运行速度快
 |-- 查询慢,增删快


 去掉重复元素案例
  依赖对象自己的equals实现

 泛型
 6.1 由来,解决程序安全性来的
 6.2 JDK1.5出现的安全机制
 6.3 如何解决,强制集合存储指定类型,将问题运行时期提前到编译时期
 6.4 好处: 安全,减少代码,避免强制类型转换
 6.5 书写格式
   |-- ArrayList存储自定义对象,带泛型

 增强for
 7.1 JDK1.5新特性,简化for循环的书写
 7.2 遍历数组和Collection集合
 7.3 格式  for(数据类型 变量: 数组或者集合){}
 7.4 弊端,不能修改数组或者集合中的元素


1 可变参数
  1.1 参数类型一样,个数不确定,使用可变参数
  1.2 格式  类型...变量名,就是数组
  1.3 注意事项
    |-- 只能写一个可变参数
    |-- 写在参数最后


2. Set集合
  2.1 自身特性
   |-- 无序
   |-- 不重复
   |-- 没有下标
  2.2 Set接口自己的方法,和父接口Collection一致

3. HashSet集合
  3.1 自身特性
   |-- 底层哈希表结构(链表数组)
   |-- 存取速度快
   |-- 线程不安全集合,运行速度快


  3.2 如何保证对象唯一性
   |-- 依靠对象自己的hashCode方法和equals方法


4. TreeSet集合
  4.1 自身特性
   |-- 底层红黑树
   |-- 对存储的对象进行自然顺序的排序
   |-- 线程不安全集合,运行速度快


  4.2 TreeSet集合排序方式
   |-- 对象的自然顺序
     定义类,实现java.lang.Comparable接口,重写compareTo方法,具备自然顺序


   |-- 利用比较器(集合自身具备比较性)
     将比较器对象,传递到TreeSet集合构造方法中,集合完全利用比较器进行排序
     实现比较器
       定义类,实现java.util.Comparator,重写compare方法

1. Map接口
 1.1 键值对映射存储集合,不允许重复键,每个键映射一个值
 1.2 Map接口方法
   |-- put
   |-- get
   |-- keySet
   |-- entrySet
   |-- size
   |-- containsKey

2. 迭代方式
 2.1 keySet方式,代码熟练
 2.2 entrySet方式(内部接口),代码熟练

3. HashMap
 3.1 自身特性
   |-- 底层哈希表
   |-- 线程不安全集合,运行速度快
   |-- 允许null值,null键
   |-- 存储键实现hashCode equals方法
 3.2 案例: 嵌套Map集合

4. TreeMap
 4.1 自身特性
   |-- 底层红黑树结构
   |-- 存储的键排序
   |-- 线程不安全集合,运行速度快
 4.2 排序方式
   |-- 对象自然顺序,实现Comparable接口
   |-- 自定义比较器,让集合自身具备比较性
      定义类实现Comparator接口

5. Hashtable
  5.1 自身特性
   |-- 底层哈希表
   |-- 线程安全集合,运行速度慢
   |-- 不允许null值,null键
   |-- 存储键实现hashCode equals方法

6. Properties
  6.1 两个方法
   |-- setProperty(字符串,字符串)  Map方法put
   |-- 字符串 getProperty(字符串)  Map方法get

7. Collections
  7.1 常见方法
   |-- sort
   |-- reverseOrder
   |-- reverse
   |-- binarysearch

8. Arrays
  asList 数组变集合
    集合不能改变长度
    不能使用基本类型数组,包装类



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值