ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:563.07KB ,
资源ID:7015961      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7015961.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java学习笔记第九章Java集合框架1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java学习笔记第九章Java集合框架1.docx

1、Java学习笔记第九章Java集合框架1第一章 此次内容一.1.1.Java集合框架中常用接口及特征一.1.2.使用ArrayList存取数据一.1.3.使用HashMap存取数据一.1.4.Java中的泛型机制第二章 具体内容二.1.为什么要有集合二.1.1.Java中的例子二.1.2.package com.aaa.collection;二.1.3./*二.1.4.* author ky二.1.5.* version 创建时间:2019年8月9日二.1.6.* 希望有一个容器可以存储班级的20名学生的信息 二.1.7.* 声明一个长度为20的数组二.1.8.* 我们使用随机数的方式给他们赋

2、值算是20名学生的信息二.1.9.* 但是此时转班过来了三名同学,那么这个时候我们要存储23名学生的成绩二.1.10.* 此时我们应该怎么办?二.1.11.* 1.对数组扩容二.1.12.* 2.使用集合二.1.13.*/二.1.14.public class AAAClass 二.1.14.1.public static void main(String args) 二.1.14.1.1.int arr = new int20;二.1.14.1.2.for (int i = 0; i arr.length; i+) 二.1.14.1.2.1.arri = (int)(Math.random(

3、) * 10);二.1.14.1.3.二.1.14.1.4.for (int i : arr) 二.1.14.1.4.1.System.out.print(i + );二.1.14.1.5.二.1.14.2.二.1.14.3.二.1.15.二.2.集合的特性二.3.只能存放引用数据类型二.4.容量没有限制二.5.由于集合的种类很多,不同的类有不同的特性,我们在使用的时候可以根据不同的需求对集合选择二.6.集合都有哪些种类二.6.1.集合主要分为两类二.6.2.二.7.Collection学习二.8.package com.aaa.collection;二.9.import java.util.

4、ArrayList;二.10.import java.util.Collection;二.11./*二.12.* author ky二.13.* version 创建时间:2019年8月9日二.14.* Collection二.15.* public interface Collection extends Iterable二.16.* 1.首先它是接口,其他他有父类二.17.* 二.18.*Collection两个主要的子接口 list,set二.19.* 如果去创建一个Collection家族的集合?二.20.* 要找实现类 这次主要用ArrayList二.21.* 二.22.* Coll

5、ection定义了很多方法方法学习二.23.* 增加元素的方法二.24.* boolean add(E e) 把参数假如对象集合,返回值代表是否增加成功 在这里里边E是泛型 先不管二.25.* boolean addAll(Collection c) 将指定集合中的所有元素添加到此集合(可选操作)二.26.* 移除元素的方法二.27.* void clear() 从此集合中删除所有元素(可选操作)。 二.28.* boolean remove(Object o) 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。二.29.* boolean removeAll(Collection c

6、) 删除指定集合中包含的所有此集合的元素(可选操作)。 二.30.* boolean retainAll(Collection c) 仅保留此集合中包含在指定集合中的元素(可选操作)。 (你有的我才有你没有的我不留)二.31.* 获取元素的方法二.32.* 查找元素的方法二.33.* boolean contains(Object o) 如果此集合包含指定的元素,则返回 true 。 二.34.* boolean containsAll(Collection c) 如果此集合包含指定 集合中的所有元素,则返回true。 二.35.* boolean isEmpty() 如果此集合不包含元素,则

7、返回 true 。 是否为空二.36.* 比较的方法二.37.* boolean equals(Object o) 将指定的对象与此集合进行比较以获得相等性。 二.38.* 操作的方法二.39.* int size() 返回此集合中的元素数。 二.40.* Object toArray() 返回一个包含此集合中所有元素的数组。 二.41.* 二.42.*/ 二.43.public class TestCollection 二.43.1.SuppressWarnings( rawtypes, unchecked )二.43.2.public static void main(String arg

8、s) 二.43.2.1./利用实现得到了一个Collection对象二.43.2.2.Collection coll = new ArrayList();二.43.2.3.Collection coll1 = new ArrayList();二.43.2.4.boolean b = coll.add(你好);二.43.2.5.coll.add(你好1);二.43.2.6.coll.add(你好2);二.43.2.7.coll.add(你好3);二.43.2.8.coll1.add(nihao1);二.43.2.9.coll1.add(nihao2);二.43.2.10.coll1.add(ni

9、hao3);二.44./ coll.addAll(coll1);二.45./ System.out.println(coll);二.46./ coll1.clear();二.47./ boolean res = coll.contains(你好21);二.48./ boolean res = coll.containsAll(coll1);二.49./ boolean res = coll.equals(coll1);二.50./ boolean res = coll.isEmpty();二.51./ boolean res = coll.remove(你好3);二.51.1.1.System

10、.out.println(coll.toArray();二.51.2.二.52.二.53.List学习二.53.1.List的特点(他的特点是相对于set来说的)二.53.2.不唯一可以有重复的元素二.53.3.有序,保证了插入时的顺序二.53.4.有索引,索引从0开始二.53.5.List方法学习二.54.package com.aaa.ky;二.55.import java.util.ArrayList;二.56.import java.util.Collection;二.57.import java.util.List;二.58./*二.59.* author ky二.60.* vers

11、ion 创建时间:2019年8月12日二.61.* List学习二.62.* boolean add(E e) 将指定的元素追加到此列表的末尾(可选操作)。 二.63.* void add(int index, E element) 将指定的元素插入此列表中的指定位置(可选操作)。 二.64.* boolean addAll(Collection c) 按指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。 二.65.* void clear() 从此列表中删除所有元素(可选操作)。 二.66.* boolean contains(Object o) 如果此列表包含

12、指定的元素,则返回 true 。 二.67.* boolean containsAll(Collection c) 如果此列表包含指定 集合的所有元素,则返回true。 二.68.* boolean equals(Object o) 将指定的对象与此列表进行比较以获得相等性。 二.69.* E get(int index) 返回此列表中指定位置的元素。 二.70.* int indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。 二.71.* boolean isEmpty() 如果此列表不包含元素,则返回 true 。 二.72.* E

13、 remove(int index) 删除该列表中指定位置的元素(可选操作)。 二.73.* boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)(可选操作)。 二.74.* boolean removeAll(Collection c) 从此列表中删除包含在指定集合中的所有元素(可选操作)。 二.75.* boolean retainAll(Collection c) 仅保留此列表中包含在指定集合中的元素(可选操作)。 二.76.* E set(int index, E element) 用指定的元素(可选操作)替换此列表中指定位置的元素。 二.77

14、.* int size() 返回此列表中的元素数。 二.78.* Object toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。 二.79.* T toArray(T a) 以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 二.80.* 返回的数组的运行时类型是指定数组的运行时类型。 二.81.* 二.82.*/二.83.public class ListTest 二.83.1.SuppressWarnings( rawtypes, unchecked )二.83.2.public static void main(Str

15、ing args) 二.83.2.1.Collection coll = new ArrayList();二.83.2.2.coll.add(abc1);二.83.2.3.coll.add(abc2);二.83.2.4.coll.add(abc3);二.83.2.5.System.out.println(coll);二.83.2.6.List list = new ArrayList();二.83.2.7.System.out.println(list);二.83.2.8.list.add(coll);二.83.2.9.System.out.println(list);二.83.2.10.li

16、st.add(aaa1);二.83.2.11.list.add(aaa2);二.83.2.12.list.add(aaa3);二.83.2.13.System.out.println(list);二.84./ list.clear();二.85./ System.out.println(list); 二.86./ boolean b = list.contains(aaa1);二.87./ System.out.println(b); 二.87.1.1.list.set(0, hello);二.87.1.2.System.out.println(list);二.87.1.3.Object ob

17、js = list.toArray();二.87.1.4.System.out.println(objs);二.87.1.5.String strs = (String) list.toArray(new String0);二.87.1.6.System.out.println(strs);二.87.2.二.88.二.88.1.List如何遍历二.88.2.遍历的第一种方法二.88.2.1.因为List有get(0) 方法,所以我们可以使用for循环的方式去取数据二.88.2.2.二.88.3.遍历的第二种方法(迭代器)二.88.3.1.我们通过iterator()方法,获取一个Iterato

18、r对象二.88.3.2.二.88.3.3.我们通过这些方法去遍历获取list里边所有的元素二.88.3.3.1.二.88.4.遍历的第三种方法二.88.4.1.增强for循环 foreach二.88.5.使用迭代器的速度比较快,get方法太慢,不推荐,在不需要更改集合的的时候,可以使用foreach二.88.6.List的实现类二.88.7.ArrayList二.88.7.1.package com.aaa.ky;二.88.7.2.import java.util.ArrayList;二.88.7.3./*二.88.7.4.* author ky二.88.7.5.* version 创建时间:

19、2019年8月12日二.88.7.6.* ArrayList学习二.88.7.7.* ArrayList的特性及方法的底层实现二.88.7.8.* 特性:是针对以LinkedList二.88.7.9.* 1.ArrayList查询效率高二.88.7.10.* 2.ArrayList增删效率低二.88.7.11.* ArrayList的底层实现二.88.7.12.* 依靠于数组二.88.7.13.* 方法实现二.88.7.14.* add方法的实现二.88.7.15.* ensureCapacityInternal(size + 1); 查看是否要,扩容二.88.7.16.* elementDa

20、tasize+ = e; 数组赋值二.88.7.17.* 每次都会判断底层的数组elementData需不需要扩容,如果需要就扩容,如果不需要就直接添加值二.88.7.18.* get方法二.88.7.19.* 在获取前先去找是否越界,如果越界直接抛出异常二.88.7.20.* remove方法二.88.7.21.* 就是生成一个数组,把elementData数组中出去要移除的元素,其余的都copy过去二.88.7.22.*/二.88.7.23.public class ArrayListTest 二.88.7.23.1.SuppressWarnings(rawtypes)二.88.7.23.

21、2.public static void main(String args) 二.88.7.23.2.1.ArrayList arrList = new ArrayList();二.88.7.23.2.2.arrList.add(123);二.88.7.23.2.3.arrList.get(2);二.88.7.23.2.4.arrList.remove(0);二.88.7.23.3.二.88.7.24.二.88.7.25.ArrayList需要注意的是扩容的问题二.88.8.Vector二.88.8.1.Vector学习二.89.package com.aaa.ky;二.90.import j

22、ava.util.Vector;二.91./*二.92.* author ky二.93.* version 创建时间:2019年8月12日二.94.* Vector学习二.95.* int capacity() 返回此向量的当前容量。 二.96.* int size() 返回此向量中的组件数。 二.97.* boolean isEmpty() 测试此矢量是否没有组件。 二.98.* E get(int index) 返回此向量中指定位置的元素。 二.99.*/二.100.public class VectorTest 二.100.1.SuppressWarnings(rawtypes)二.10

23、0.2.public static void main(String args) 二.100.2.1.Vector vector = new Vector();二.100.2.2.System.out.println(vector.capacity();二.100.2.3.System.out.println(vector.size();二.100.3.二.101.二.101.1.1.Vector的方法基本上也都和list一致,所以在这里不说那么多二.101.1.2.在这里说一下Vector和ArrayList的区别二.101.1.2.1.Vector与ArrayList一样,也是通过数组实现

24、的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector二.101.1.2.2.避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。二.101.1.2.3.简单的说Vector效率低,但是线程安全二.101.2.LinkedList二.101.2.1.LinkedList表示链表的操作类,它同时实现了List和Queue接口。二.101.2.2.它的优点在于向集合中插入、删除元素时效率比较高,二.101.2.3.特别是可以直接对集合的首部和尾部元素进行插入和删除操作,LinkedList提供了专门针对首尾元素的方法,二.101.3.

25、什么是链表二.101.3.1.链表有两种二.101.3.1.1.单向链表二.101.3.1.1.1.二.101.3.1.2.双向链表二.101.3.1.2.1.二.101.3.1.3.双向循环链表二.101.3.1.3.1.二.101.3.2.链表的特性二.101.3.2.1.在内存中不是一块连续的空间二.101.3.2.2.每个元素里边都存储着下一个元素的地址,链表的元素之间通过地址寻找二.101.3.2.3.查询速度慢是因为必须一个一个元素的去寻找,无法定位到某个元素所处的空间,然而,arrayList不同,底层就是一个数组是一块连续的空间,我们很容易就定位到某个元素,所以arrayLis

26、t查询速度比较快二.101.3.2.4.增删速度快的原因是因为,删除元素的时候我们只需要对这个元素的上一个元素和下一个元素指向的位置进行改变就行了但是arrayList需要对整个数组进行修改,生成一个新的数组,所以内存的开销比较大二.102.泛型的学习?二.103.Set接口学习二.103.1.Set二.103.2.package com.aaa.ky;二.103.3.import java.util.HashSet;二.103.4.import java.util.Iterator;二.103.5.import java.util.Set;二.103.6./*二.103.7.* author

27、 ky二.103.8.* version 创建时间:2019年8月12日二.103.9.* set接口的特性二.103.10.* 1.元素唯一 不能有重复的元素二.103.11.* 2.无序的,集合内的元素都是无序的。具体实现类具体分析二.103.12.* 3.没有索引二.103.13.* set接口的方法二.103.14.* 和collection一致 不说了二.103.15.* set接口的实现类二.103.16.* HashSet二.103.17.* TreeSet二.103.18.* LinkedHashSet二.103.19.* set的遍历二.103.20.* 1.迭代器二.103

28、.21.* 2.foreach二.103.22.* set的底层二.103.23.* set的底层是依赖于map的,每一个set实例底层都包含一个map二.103.24.*/二.103.25.public class SetTest 二.103.25.1.public static void main(String args) 二.103.25.1.1.Set set = new HashSet();二.103.25.1.2.set.add(AAA);二.103.25.1.3.set.add(欢迎你们来学习);二.103.25.1.4.set.add(如果你在学习中遇到了困难);二.103.2

29、5.1.5.set.add(可以练习我们的老司机);二.103.25.1.6.set.add(例如);二.103.25.1.7.set.add(AAA老哥);二.103.25.1.8./遍历二.103.25.1.9.Iterator it = set.iterator();二.103.25.1.10.while (it.hasNext() 二.103.25.1.10.1.System.out.println(it.next();二.103.25.1.11.二.103.25.1.12.for (String string : set) 二.103.25.1.12.1.System.out.println(string);二.103.25.1.13.二.103.25.2.二.103.26.二.103.27.为什么我们不能往set里边添加重复的值呢?二.103.28.请看代码二.103.29.package com.aaa.ky;二.103.30.import java.util.HashSet;二.103.31.import java.util.Set;二.103.32./*二.103.32.1.* author ky二.103.32.2.* version 创建时间:2019年8月12日 二.103.32.3.* HashCode学习二.103.32.4.*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1