您的位置:首页 > 编程语言 > Java开发

Java知识点整理:第九章:线性表、散列表 Map、集合、泛型、集合工具类 Collections

2016-11-13 22:01 393 查看
我只是简单的给大家整理下学习java需要掌握的基础知识点,更深层次的知识点也许我会在以后的日子里给大家整理,见谅。

1.线性表

 
List表示有先后顺序的对象的集合.
   
   
   StringBuilder = char[] +操作
  
   ArrayList = Object[] + 操作
 
     ArrayList与StringBuilder相比,
    
操作基本相同,但是ArrayList除了可以添加String,还可以添加其他类型的对象.
 
   
     ArrayList的长度:  size();
 
     ArrayList的API(学会查手册)
 
     ArrayList(jdk1.2版本以上)是使用边长数组算法
     实现的.ArrayList继承自List
     ArrayList是有序的集合.
 
     Vector(jdk1.0就有了)与ArrayList相比基本一样
 
     ArrayList
线程不安全的,效率比较快
     Vector 
线程安全的,效率稍低
 
 
    LinkedList:        双向循环链表
 
 
   ArrayList与LinkedList的区别?
     1.底层实现不同
     2.效率:
               查询:ArrayList比LinkedList快
  
增删:LinkedList
比ArrayList快.

2.散列表

   表 Map    

   
可以看成是无序的对象的集合.
 
   
容量:散列表中散列数组的大小
   
散列运算: 
散列值(散列数组的下标)的运算,通过对象的hashcode来计算的.
 
   
散列桶:散列值相同的元素的线性集合
   
加载因子:就是散列数组的加载绿,
             
一般小于75%性能比较理想
     
就是元素的数量/容量 = 75%
   
散列查找:根据给定的key计算散列值,根据散列值找到对应的散列桶,在散列桶中比较key,如果一样,就返回value
     
如果key比较不一样,就继续往下 一个判断, 散列桶中,key不同,value是可以相同的
 
 
   (k,v)-->(key,value)--->键值对
        

 
HashMap
    HashMap以键值对的形式存储对象,key是唯一的不能重复的。value随便.
    HashMap默认的容量是16.默认的加载因子是75%
    HashMap是根据key来保存元素,查找元素的.
 
   
注意事项:
HashMap存元素的时候会通过key来计算保存的位置,在每一个位置上都有一个散列桶(线性表),每个散列桶中可以保存N多元素.
 
在保存的时候,会先确定保存的位置.然后会调用对象的equals()方法比较有没有相同的对象.
如果有相同的对象,就会进行覆盖.
如果没有相同的对象,那就保存.
 
       

在关系到hash算法的集合中,保存元素的时候要重写hashCode,equals方法。
 

 
   API:

clear()

containsKey(obj)

containsValue(obj)

get(key)

isEmpty();

put()

remove();

size();
 
 HashMap与HashTable的区别是什么?
    HashMap 
线程不安全,效率高
    HashTable 
线程安全,效率稍低

3.集合

Set
   HashSet
     
一个无序不重复的对象的集合.
 
   
集合的迭代:
   
集合的迭代,是一种遍历算法.
   
通俗点理解就是把集合中的元素经过循环的方式挨个取出来.
 
    java使用Iterator接口描述了迭代操作模式.
   
可以通过集合对象获取Iterator的具体实例对象.
   
此Iterator实例是集合的一个元素序列试图.
   
默认会包含一个操作游标.(在第一个元素之前)
 
     hasNext()方法可以检查游标是否有下一个元素
     next():移动游标到下一个元素,并且返回这个元素的引用.
 
    
使用while()循环配合这两个方法一起使用.
 
 
    
迭代的时候不能使用集合的方法(add,remove,set)
    
如果要操作元素,只能使用迭代器提供的方法.
 
 
集合框架(Collection  Map)

   
集合框架包括集合和映射(Collection and Map) 以及他们的子类
 
    1)List元素有先后次序的集合.元素有index位置元素可以重复,
继承自Collection接口,具体的实现类:ArrayList 
LinkedList
    2)Set元素无序,不重复.继承自Collection接口,具体的实现类:
HashSet
 
    3)Collection集合,没有说明元素是否重复,是否有序.根据子类的具体实现决定元素是否有序或者是否可以重复.
    4)Map描述了<k,v>键值对的集合.key不能重复.
      Value可以重复.
     
具体的实现类:
             HashMap(散列算法实现)
  TreeMap(二叉树实现)

4.泛型

泛型是java5以后提出的语法现象. 作用是在编译期检查类型(运行时不检查泛型), 一般来说用来约束类中元素的类型,集合中元素的类型等等.

   class ArrayList<E>  
定义
   newArrayList<String> 
使用
 
   E:任何类型   

   String,在后期使用中,一般建议使用泛型约束类型.
 
  
比如在集合的应用中,如果使用泛型约束了集合中元素类型,那么集合中只能保存被执行的类型.
  
在取元素的时候,不需要再强制转换.

5.集合工具类

与数组工具类比较类似.提供了许多的操作集合的方法.比如排序,二分查找,打乱,填充等操作.
    
 
Comparable
和Comparator
 
Comparable:
比较接口(实现了此接口,表示该类的对象是可以进行比较的)
        compareTo():

     
返回正数 
表示大
     
返回负数 
表示小
     
返回0  
表示相等.
       
注意:Comparable的实现必须与equals()的结果一致.相等对象比较,返回0.
Comparator
     
临时比较器: 用于制定临时比较规则.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐