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
临时比较器: 用于制定临时比较规则.
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
临时比较器: 用于制定临时比较规则.
相关文章推荐
- 黑马程序员——java基础知识之泛型、集合(Map、工具类等)
- 3.9 java基础总结集合①LIst②Set③Map④泛型⑤Collections
- JAVA自学-20180322 HashSet、SortedSet、Map、SortedMap、Collections工具类、泛型等
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- JAVA 集合类(Collection)、List、Set、Map、Collections与Arrays、泛型
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- Java基础---泛型、集合框架工具类:collections和Arrays
- 黑马程序员—java基础学习--Map集合、Collections,Arrays工具类
- Map(接口简介、HashMap集合、TreeMap集合、Properties、泛型、Collections工具类、Arrays工具类)
- Java基础---泛型、集合框架工具类:collections和Arrays (黑马程序员)
- 黑马程序员——Java语言基础:集合框架(Collection、Map,工具类Collections、Arrays)
- Java基础 - 双列集合Map,HashMap,LinkedHashMap,LinkedMap,TreeMap,Collections工具类
- 黑马程序员——Java基础---泛型、集合框架工具类:Collections和Arrays、JDK 1.5新特性
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
- Java泛型07 : Java自带的泛型Collection、List、Map、Set以及工具类Arrays和Collections
- 黑马程序员----Java集合框架学习笔记2 Map-工具类-泛型
- Java学习日记(九)Collection、泛型、Map集合、Collections&Arrays、增强for语句、可变参数、静态导入
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- 10.集合框架(三)【Map】【集合技巧】【工具类Collections】【工具类Arrays】