黑马程序员一一Collection集合框架和List集合笔记
2015-08-15 15:47
676 查看
黑马程序员一一Collection集合框架和List集合
———–android培训、java培训、期待与您交流!————1.什么是集合?
能够存储多个同类型的基本数据类型的容器我们叫数组,那么可以存储多个同类型对象的容器我们就称之为集合!
[code]什么是Collection集合框架,通过下面这个图来说明!
Collection是一个根接口,而它旗下又很多个子接口继承了它,其中两个最重要的子接口分别的是List和Set,它们继承了Collection接口之后,自己又有自己的新特性,List接口下有3个子类实现了它,Set接口下有2个子类实现了它。它们之间的这种层级关系就形成了一个框架,我们就叫它Collection集合框架!
[code] 为什么会出现这么多种集合呢? 因为每一个容器对数据的存储方式都不同。这个存储方式我们称之为数据结构!
2.List集合和Set集合
List和Set都是继承了Collection接口
不同的话就是实现了List集合的类它存储的元素都是有序的,而且有索 引,可以出现重复的元素,而Set集合的元素是无序的,没有索引,不能出现重复元素。
2-1.List集合的子类:
List有3个比较重要的子类,分别是ArrayList,LinkedList,Vector。
ArrayList和Vector差不多,它们最大的区别就在ArrayList是不同步的,Vector是同步的,ArrayList的效率比较高,所以我们一般都ArrayList。
ArrayList的特点:它的底层是数组的结构,所以它和数组一样,每一个元素都有索引,而且它是有序的,集合在可以存在重复的元素。因为底层是数组结构的,所以它的查询元素速度快,但是增删元素的速度就相对较慢。
[code]//通过一段代码来看看ArrayList的创建和一些基本操作 class demo01 { public static void main(String[] args) { ArrayList arr = new ArrayList();//创建对象 ArrayList arr1 = new ArrayList(); arr.add("java1");//添加元素 arr.add("java2"); arr.add("java3"); arr.add("java4"); arr1.add("java1");//添加元素 arr1.add("java2"); arr1.add("java6"); arr1.add("java5"); Iterator it = arr.iterator();//获取一个迭代器 用于取元素 while(it.hasNext()) //判断容器是否为空 返回boolean { sop(it.next());//返回下一个元素 } /* //另一种写法 能减少内存的使用 for (Iterator it = arr.iterator(); it.hasNext(); ) { sop(it.next()); }*/ sop(arr);//原来的元素 cc.p(arr.containsAll(arr1));//是否包含arr这个集合 cc.p(arr.size());//集合的长度 arr.removeAll(arr1);//去除了和arr1相同的部分 sop(arr); arr.retainAll(arr1);//只保留和arr1相同的部分 sop(arr); } //一个打印的小方法 public static void sop(Object obj) { System.out.println(obj); } }
LinkedList的特点:它的底层是链表的结构,所以它和链表一样,每一个元素都有索引,而且它是有序的,集合在可以存在重复的元素。因为底层是链表结构的,所以它的查询元素速度较慢,但是增删元素的速度非常快。
[code]//通过一段代码来看看LinkedList创建和的方法 class myList//操作和创建LinkedList集合的类 { private LinkedList link; myList() { link = new LinkedList();//构造函数创建LinkedList类 } public void myAdd(Object obj) ;//写入元素 { link.addLast(obj); } public boolean myEmpty() ;//判断容器里是否为空 { return link.isEmpty(); } public Object myRemove() ;//取出容器里的元素 从最后一个开始取 { return link.pollLast(); } } class demo03 { public static void main(String[] args) { myList link = new myList();//创建一个LinkedList对象 link.myAdd("java1");//往里面添加元素 link.myAdd("java2"); link.myAdd("java3"); link.myAdd("java4"); while(!link.myEmpty())//删除所有元素 { System.out.println(link.myRemove()); } } }
[code]总结: ArrayList和LinkedList都可以存储有序的带有索引的元素,如果是查找动作比较多的话,可以使用ArrayList!如果是经常要对集合里的元素进行操作的话那用LinkedList会比较好!
相关文章推荐
- JAVA面试题第一章:JAVA基础
- iOS面试题3
- iOS面试题2
- iOS面试题1
- 黑马程序员----java基础之面向对象
- 黑马程序员----面向对象及其三大特性
- 黑马程序员----包(package)
- 黑马程序员----其他类
- 黑马程序员----接口(interface)
- 黑马程序员——集合框架(java基础)
- 黑马程序员----内部类
- 黑马程序员----抽象类
- 黑马程序员----java中的异常
- 黑马程序员--java基础--反射
- 黑马程序员--java基础--多线程
- 面试问题
- 黑马程序员——Java基础集合、泛型
- 黑马程序员——Java基础String类和基本数据类型包装类
- 简化IT程序员工作生活的4个窍门
- 程序员什么时候该考虑辞职