关于集合我个人的总结和理解
2016-12-27 19:35
375 查看
1.所有的集合都是collection的子类,collection 的取出用的是内部类迭代器,并且iterator只有三个方法。由hasNext判断是否存在下一个元素,由next()方法取出元素。遍历的时候为了提高效率用for循环,不用while因为for循环遍历之后会释放Iterator对象。
2.collection下存在两个接口,分别是list和set
list:特点有序的集合,可以有重复的元素,取出方法两种,传统的Iterator和get(index)。并且在遍历的时候,如何利用iterator()方法是不能够在遍历的时候随着遍历的结果判断条件然后在其中添加元素的,如果添加会报错,并发的问题,(也就是说遍历的时候不可以添加元素),解决的办法:listIterator()这个接口是存在添加的,可以很好的解决此问题。
set:无序,不允许重复的元素。取出利用迭代器。
2.1 list下面比较常用的对象:vector 它的内部是数组数据结构,同步的,因为是同步的所以增加删除和查找都是非常慢的。
arrayList 它的内部也是数组数据结构,是非同步的。因为是数组结构在堆中存储是连续的,所以查找的速度会比较的快。
linkedList它的内部结构是链表,在堆中的存储是一个链表接口,第一个数据中不仅存储着第一个数据的值,也存储着下一个数据中的地址值,所以它的增加和删除是非常的快的。
所以在写程序的时候根据需要选择相对应的对象,但一般情况下vector是不常用,因为他是同步的,用起来是比较慢的。
2.2 set 下面的对象 hashset 内部是哈希表 set的取出只有一个方法就是迭代器。它的有序是用linkedhashset
treeset 树:使用元素的自然顺序,他有自己的排序。顺序是固定的。
3.map.添加:put
删除:remove
判断:isEmpty() containsKey() containsValue()
获取:1)keyset 此方法就是把map中的key全部取出来 变为Set集合,然后再遍历它 Set keyset = map.keySet();利用Iterator it = keyset.iterator(); while(it.hasNext()){map.get(it.next())}.
2)entrySet 此方法是通过map的entrySet方法来实现取出 set<Map.Entry<Integer,String>> entrySet =map.iterator();
Iterator<Map.Entry<Integer,String>> it = entrySet.iterator();
while(it.hasNext()){
Map.Entry<Integer,String> me=it.next();
Integer key = me.getKey();
String value = me.getValue();
System.o
4000
ut.println(key+"::"+value);
}
子类:hashtable: 内部结构是哈希表,同步的,不允许null键和null置 里面有一个properties
hashMap :内部结构也是哈希表,是不同步的,允许存储null键null值。
treeMap: 内部结构是二叉树,不是同步的,可以对map中的键进行排序。
4.泛型:泛型在编译的时候有,但在运行的时候会对泛型进行擦除,因为在运行的时候泛型并没有作用了,但是只是在运行的时候擦除,当应用的时候会对其进行补偿。
2.collection下存在两个接口,分别是list和set
list:特点有序的集合,可以有重复的元素,取出方法两种,传统的Iterator和get(index)。并且在遍历的时候,如何利用iterator()方法是不能够在遍历的时候随着遍历的结果判断条件然后在其中添加元素的,如果添加会报错,并发的问题,(也就是说遍历的时候不可以添加元素),解决的办法:listIterator()这个接口是存在添加的,可以很好的解决此问题。
set:无序,不允许重复的元素。取出利用迭代器。
2.1 list下面比较常用的对象:vector 它的内部是数组数据结构,同步的,因为是同步的所以增加删除和查找都是非常慢的。
arrayList 它的内部也是数组数据结构,是非同步的。因为是数组结构在堆中存储是连续的,所以查找的速度会比较的快。
linkedList它的内部结构是链表,在堆中的存储是一个链表接口,第一个数据中不仅存储着第一个数据的值,也存储着下一个数据中的地址值,所以它的增加和删除是非常的快的。
所以在写程序的时候根据需要选择相对应的对象,但一般情况下vector是不常用,因为他是同步的,用起来是比较慢的。
2.2 set 下面的对象 hashset 内部是哈希表 set的取出只有一个方法就是迭代器。它的有序是用linkedhashset
treeset 树:使用元素的自然顺序,他有自己的排序。顺序是固定的。
3.map.添加:put
删除:remove
判断:isEmpty() containsKey() containsValue()
获取:1)keyset 此方法就是把map中的key全部取出来 变为Set集合,然后再遍历它 Set keyset = map.keySet();利用Iterator it = keyset.iterator(); while(it.hasNext()){map.get(it.next())}.
2)entrySet 此方法是通过map的entrySet方法来实现取出 set<Map.Entry<Integer,String>> entrySet =map.iterator();
Iterator<Map.Entry<Integer,String>> it = entrySet.iterator();
while(it.hasNext()){
Map.Entry<Integer,String> me=it.next();
Integer key = me.getKey();
String value = me.getValue();
System.o
4000
ut.println(key+"::"+value);
}
子类:hashtable: 内部结构是哈希表,同步的,不允许null键和null置 里面有一个properties
hashMap :内部结构也是哈希表,是不同步的,允许存储null键null值。
treeMap: 内部结构是二叉树,不是同步的,可以对map中的键进行排序。
4.泛型:泛型在编译的时候有,但在运行的时候会对泛型进行擦除,因为在运行的时候泛型并没有作用了,但是只是在运行的时候擦除,当应用的时候会对其进行补偿。
相关文章推荐
- 关于概率dp的个人理解与总结
- 关于 Floyd的个人理解与总结
- 关于概率dp的个人理解与总结
- 黑马程序员--07.集合框架--并发访问异常理解:一个单线程程序的多线程运行思想【个人总结】
- 关于排序的总结和部分实现(个人理解整理版)
- 关于bash与sh的话题(限于一般linux),以下个人的一些总结及理解,有理解错误的地方还望指点
- 关于k-NN算法的总结及个人理解
- 关于zookeeper选举leader原理及自定义leader个人理解和总结
- 关于学好J2SE有啥用的个人理解
- Spring特点中关于DI,IOC及AOP的个人理解
- 关于DataRow和DataColumn的一点个人简单理解-.NET教程,数据库应用
- 关于位域个人理解
- 关于实施RUP软件过程控制的方法和标准[只是一个个人总结]
- 关于云计算的个人的理解
- 关于rollup,cube,grouping sets的个人理解
- 关于装饰者模式的个人理解
- 关于DataRow和DataColumn的一点个人简单理解
- 关于Bellman最优化原理和动态规划的个人理解
- 关于DataRow和DataColumn的一点个人简单理解
- 关于DataRow和DataColumn的一点个人简单理解