黑马程序员技术交流社区

标题: 用代码的形式来展现集合中的一些应用,看看你掌握了多少?附加注释呦! [打印本页]

作者: 朱玉祥    时间: 2013-6-13 20:51
标题: 用代码的形式来展现集合中的一些应用,看看你掌握了多少?附加注释呦!
集合总结

1. 集合是干什么的
  |-- 存储对象,只能存储对象
  |-- 集合长度是可变的

2. Collection接口
  |-- List
    |--有索引,有序
     |-- ArrayList
       |-- 底层是可变数组结构,默认10个,每次增长50%
       |-- 特点:查询块,增删慢,线程不安全
     |-- LinkedList
       |-- 底层是链表数据结构
       |-- 特点:查询慢,增删块,线程不安全
     |-- Vector
       |-- 底层是可变数组结构,默认10个,每次增长100%
       |-- 线程安全,效率低,被ArrayList替代
      
  |-- Set
    |-- 没有索引,无序,不允许重复元素
     |-- HashSet
       |-- 底层是哈希表,不存储重复元素
       |-- 存储自定义对象,需要覆盖对象中的hashCode和equals方法,保证对象对象唯一
     |-- TreeSet
       |-- 底层是二叉树结构,不存储重复元素
       |-- 存储对象,按照对象的自然顺序排序
       |-- 自定义对象,必须具备比较性
         |--对象本身具备比较性,实现Comparable接口,覆盖compareTo方法
         |--TreeSet本身具备比较性,自定义比较器,实现Comparator接口,覆盖compare方法
     |-- LinkedHashSet
       |-- 底层是基于链表的哈希表结构
       |-- 保证元素的存储和取出顺序

|-- 迭代器
   |-- Iterator接口,取出集合中的元素
   |-- List和Set集合都有获取迭代器的方法 iterator
     |-- hashNext
     |-- next
   |-- ListIterator接口,List特有迭代器
   |-- 可以在迭代集合中,对集合进行增删改的操作
   
|-- 泛型
   |-- JDK1.5以后,引入的安全机制
   |-- 将问题提前到了编译时期
   |-- 避免了强制类型转换
   |-- List Set将上泛型后的效果
   |-- <数据类型>  JDK 1.7前后自动匹配
   
3. Map 集合
  |-- 双列集合,将键映射到值
  |-- 保证键的唯一性,一个键只能映射一个值
  |-- put方法将元素存入到集合
  |-- get方法根据键,获取值,没有这个键,就返回null

4. Map 集合取出方式
  |-- keySet方法*****
  |-- Map.Entry 对应集合中的entrySet方法*****
  
5. Map 集合的子类
  |-- HashMap
    |-- 底层是双列的哈希表
    |-- 不存储重复元素
    |-- 存储自定义的对象,必须覆盖hashCode和equals方法
    |-- 此集合运行null值和null键
  |-- TreeMap
    |-- 底层是红黑树,优化算法的二叉树
    |-- 存储在这个集合的元素,按照自然顺序排序
    |-- 自定义对象,必须具备比较性
         |--对象本身具备比较性,实现Comparable接口,覆盖compareTo方法
         |--TreeSet本身具备比较性,自定义比较器,实现Comparator接口,覆盖compare方法
  |-- LinkedHashMap  
    |-- 基于链表的哈希表,双列集合
    |-- 保证存储和取出的顺序
   

6. 什么时候使用哪些集合
  |-- 看实际要求
   |-- 存储对象,不重复 HashSet
   |-- 存储对象,不重复需要排序 TreeSet
   |-- 存储对象,可以重复,需要查询块 ArrayList
   |-- 存储对象,可以重复,增删块 LinkedList
   |-- 存储对象不确定,不知道重复不重复,不知道谁需要更快的操作
       ArrayList -- 不确定用哪个集合时,选择ArrayList
      
7. Collections工具类
   |-- sort
   |-- reverseOrder
   |-- reverse
   |-- fill
   |-- shuffle
   |-- max,min
   |-- binarySearch
   |-- swap
   |-- synchronized开头的方法

8. Arrays工具类
   |-- sort
   |-- binarySeach
   |-- toString
   |-- asList*****
   |-- Collection中的方法toArray()*****

9. 增强for循环
   |-- 格式
     for(数据类型 变量 : 集合或者数组){
       sop(变量);
     }

10. 可变参数的函数
    格式  functionname(类型...变量){
      变量就是数组
  当传递的参数类型一致,个数不确定的时候,推荐使用可变参数形式     
    }
  
作者: ying_1990    时间: 2013-6-13 21:18
学习了,谢谢.
不过那些星号是神马?望费心修改一下
作者: 神之梦    时间: 2013-6-13 21:40
{:soso_e179:}
作者: Heart    时间: 2013-6-13 22:22
很直观,学习了
作者: 孙百鑫    时间: 2013-6-14 04:52
加油~继续努力哦!!!好样的
作者: 夜默    时间: 2013-6-14 11:20
楼主你好,问题解决了没? 解决了就去修改成 “已解决”吧!
作者: 王靖远    时间: 2013-6-14 12:30
好东西要收藏 收藏要回帖。
作者: ′х.|鰉❤耔    时间: 2013-6-14 12:32
{:soso_e113:}~·度学习过,了解过~·不过还需要大量的学习来加深自己的记忆才行,不然很容易忘记的,不过还有有API在手,多看看API真是好处很多的噢
作者: 王亚飞    时间: 2013-6-14 17:14
这个总结的不错啊,都掌握了集合就没问题了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2