如鹏网JAVA培训笔记28晓伟整理.docx
- 文档编号:24586660
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:23
- 大小:1.40MB
如鹏网JAVA培训笔记28晓伟整理.docx
《如鹏网JAVA培训笔记28晓伟整理.docx》由会员分享,可在线阅读,更多相关《如鹏网JAVA培训笔记28晓伟整理.docx(23页珍藏版)》请在冰豆网上搜索。
如鹏网JAVA培训笔记28晓伟整理
写在前边的话:
2015年2月2日如鹏线上训练营第四十天
如果你想要成功,你就必须要改变!
如果你不改变,你就只能像你以前那样,平平庸庸,碌碌无为。
我们生命的历程也像小河流一样,想要跨越生命中的障碍,达到自己想要的成就,也需要有放下自我、改变自我的决心与勇气,这样才能一天天地向成功迈进,实现自己的梦想!
要让事情改变,先改变自己;要让事情变得更好,先让自己变得更好。
只要你一改变,生命也会随之发生变化。
人生在世,谁不渴望出人头地。
但遗憾的是,我们很多人一直未能跨入成功者的行列。
美国著名成功哲学演说家金·洛恩说过一句话:
“成功不是追求得来的,而是被改变后的自己主动吸引而来的。
”我们之所以没有成功,是因为在我们身上存在着许多致命的缺点,如没有明确的人生计划和目标、缺乏自信、没有耐心、不够勤勉、不够谦和等等,这些缺点严重制约了我们的发展,如果我们不改正这些缺点,就很难取得什么成就。
一句话:
想要成功就必须改变自己!
集合:
javaAPI所提供的一系列类的实例,可以用于动态存放多个对象
●JDK所提供的集合API位于java.util包下
●javaCollectionsFramework图如下:
Java集合框架:
是一个容器,容器类。
程序主要是数据,大量的数据,管理和存储大量的数据。
‘
Java基础中最关键的就是java框架。
第一大块内容:
-------------------------------------------------
Collection接口(单链数据,单个数据):
包含子类List和set
List接口:
又包含:
ArrayList和LinkedList
Set接口:
又包含HashSet和TreeSet
第二大块内容:
-------------------------------------------------
Map接口(多链,多组数据):
包含子类HashMap和TreeMap
-------------------------------------------------
第三大块内容:
---------------------------------------------------
Java集合框架为我们提供的两个工具类(静态方法):
Collections和Arrays
---------------------------------------------------
Collection接口的第一组方法:
booleanadd(Objecto)//添加一个元素
booleanremove(Objecto)//删除一个元素
Iteratoriterator()//获得此集合的迭代器,用来遍历此集合的所有元素
booleancontains(Objecto)//判断一个元素是否在此集合中
voidclear()//清空此集合中的元素
booleanisEmpty()//判断此集合是否包含元素
intsize()//获得此集合包含多少元素
注意:
有黄线的原因是因为:
所调用的方法已经实现了泛型,而你没有处理泛型,所以会黄线提示!
Collection接口的第二组方法:
(改变的都是本集合,不会影响到另外那个集合元素的)
booleanaddAll(Collectionc)//添加另一个的集合的所有元素到集合一中(相当于并集)元素可以重复出现
booleanremoveAll(Collectionc)//删除此集合中包含的另外一个集合的元素(删除两个集合共有的元素)
booleancontainsAll(Collectionc)//判断此集合是否包含另外一个集合中所有的元素。
booleanretainAll(Collectionc)//删除此集合中不属于另外一个集合的元素(相当于求交集)
考java班的同学一个小题(不知道大家尝试过没有,先回答再尝试):
Collectioncoll=newArrayList();
coll.add("aaa");
coll.add("bbb");
Collectioncoll2=newLinkedList();
coll2.add("ddd");
coll2.add("eee");
//求交集问题
//如果此collection随调用的结果而发生改变,则返回true,如果没变化,则返回false
booleanra=coll.retainAll(coll2);
是true因为集合一和集合二还有一个空集
再看看
Collectioncoll=newArrayList();
coll.add("aaa");
coll.add("bbb");
Collectioncoll2=newLinkedList();
coll2.add("aaa");
coll2.add("bbb");
//如果此collection随调用的结果而发生改变,则返回true,如果没变化,则返回false
booleanra=coll.retainAll(coll2);
是false
Objecto=it.next();//取出下一个元素
It.next();
强行调用element3之后的元素,会抛出异常
所以在调用next()方法之前必须调用hasNext()方法来判断是否还存在着下一个元素
注意:
Java是不允许在使用迭代器的时候,进行添加、删除元素的(coll.add();coll.remove();)
因为这样会可能导致出错(线程同步,异步的问题)
迭代器只提供了remove方法,方便我们的使用!
使用集合存储自定义类的对象:
集合对象中,存储的是对象首地址(或叫做对象的引用!
)
创建Collection变量coll,接受new出来的ArrayList的一个集合对象。
这样就会在JVM(java虚拟机中创建一个对象)的堆内存(专门用来创建对象!
)创建对象。
我们只要用new出来的所有的对象,分配存储位置都是在堆内存中分配的
List接口:
●List接口通常称为列表,它有自己的一些属性:
⊙元素有序:
元素的添加顺序和迭代顺序相同
⊙元素可重复:
元素可多次添加到list对象中
这两个特性实际上是它的两个子类(ArrayList和LinkedList)所具有的特性!
●List接口是Collection接口的子接口,除继承了Collection的方法外,还有自己特有的方法。
●List接口的实现类(两个子类):
ArrayList
LinkedList
根据ArrayList,LinkedList,HashSet,TreeSet具体实现类向上抽取的共同特性实现了List抽象接口和Set抽象接口,再向上抽象实现了Collection抽象接口!
由底层类抽象向上的
内部的数据结构决定了:
List的两个具体实现的子类具有的特性!
List接口特有的方法:
List继承了Collection接口,除了Collection接口提供的方法之外,List还有自己的方法:
☉voidadd(intindex,Objecto)//在指定索引位置添加元素
☉booleanaddAll(intindex,Collectionc)//在指定索引位置添加一组元素
☉Objectget(intindex)//获取指定索引位置的元素
☉Objectremove(intindex)//删除指定索引位置的元素
☉Objectset(intindex,Objecto)//修改指定索引位置的元素
☉intindexOf(Objecto)//查询指定元素在此list中的索引(-1表示不存在)
☉intlastindexOf(Objecto)//查询指定元素在此list中最后一次出现的索引。
☉ListsubList(intbeginIndex,intendIndex)//截取此list的子列表
☉ListIteratorlistIterator()//获得此list的列表迭代器
☉ListIteratorlistIterator(intindex)//获得此list的列表迭代器,指针指向index位置。
List特有方法都是操作下标的
//方法一:
Iterator迭代器
System.out.println("遍历结果为:
");
Iterator
while(it.hasNext())
{
Stringre=it.next();
System.out.print(re+",");
}
System.out.println();
//方法二:
增强版的for循环
System.out.println("增强版的for循环语句:
");
for(Strings:
coll)
{
System.out.print(s+",");
}
ListIterator接口:
第一组:
⊙booleanhasNext()//判断是否还要下一个元素
⊙Objectnext()//取出下一个元素,并把指针移动到下一个元素
⊙intnextIndex()//下一个元素的索引
第二组:
⊙booleanhasPrevious()//判断是否有前一个元素
⊙Objectprevious()//取出前一个元素,并把指针移动到前一个元素
⊙intpreviousIndex()//前一个元素的索引
第三组:
⊙voidadd(Objecto)//添加一个元素
⊙voidremove()//删除指针指向的当前元素
⊙voidset(Objecto)//修改指针指向的当前元素
输出结果为:
ArrayList:
●内部数据结构:
数组(结构决定可以执行哪些操作以及这些操作的效率)
在集合中实际存储的不是具体的数据,而是元素的首地址
ArrayList是使用数组结构实现的List集合
优点:
对于使用索引取出元素有较好的效率
它使用索引来快速定位对象
缺点:
元素做删除或插入速度较慢
因为使用了数组,需要移动后面的元素以调整索引顺序。
凡是能用Iterator迭代的集合都可以用JDK5.0中增强的for循环来更简便的遍历。
示例:
List
list.add(“abc”);
list.add(“123”);
list.add(“e”);
for(Strings:
list)
{
System.out.println(s);
}
LinkedList是使用双向链表实现的集合。
LinkedList新增了一些插入、删除的方法。
voidaddFirst(Ee)将指定元素插入此双端队列的开头。
voidaddLast(Ee)将指定元素添加到此列表的结尾。
等效于add(Ee)
EgetFirst()返回此列表的第一个元素。
等效于element()
EgetLast()返回此列表的最后一个元素。
优点:
对频繁的插入或删除元素有较好的效率
适合实现栈(Stack)和队列(Queue)
模拟栈的结构:
后进先出:
LastInFirstOut:
LIFO
●Epop()从此列表所表示的堆栈处弹出一个元素。
移除并返回此列表的第一个元素,等效于removeFirst()
●voidpush(Ee)将元素推入此列表所表示的堆栈。
将该元素插入此列表的开头。
此方法等效于addFirst(E)
模拟队列的功能:
先进先出:
FirstInFirstOut:
FIFO
●publicbooleanoffer(E e)将指定元素添加到此列表的末尾(最后一个元素)等效于offerLast()
●publicEpoll()获取并移除此列表的头(第一个元素)等效于pollFirst()
●Epeek()获取,但不移除此双端队列所表示的队列的头部(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回null。
此方法等效于peekFirst()。
借助内部类进行添加内部的对象首地址!
从而实现了:
记住数据对象的同时还可以指向下一个对象。
单链结构、双链结构、环结构
当使用有容量限制的双端队列时,offerFirst(E)通常优于addFirst(E)方法。
addFirst(E)可能无法插入元素,而只是抛出一个异常。
E
peek()
获取,但不移除此双端队列所表示的队列的头部(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回null。
E
peekFirst()
获取,但不移除此双端队列的第一个元素;如果此双端队列为空,则返回null。
E
peekLast()
获取,但不移除此双端队列的最后一个元素;如果此双端队列为空,则返回null。
E
poll()
获取并移除此双端队列所表示的队列的头部(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回null。
E
pollFirst()
获取并移除此双端队列的第一个元素;如果此双端队列为空,则返回null。
E
pollLast()
获取并移除此双端队列的最后一个元素;如果此双端队列为空,则返回null。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如鹏网 JAVA 培训 笔记 28 整理