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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

day12day15集合.docx

1、day12day15集合1. 集合1.1. 什么是集合存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。1.2. 集合和数组的区别数组和集合类都是容器数组长度是固定的,集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象数组中存储数据类型是单一的,集合中可以存储任意类型的对象。集合类的特点用于存储对象,长度是可变的,可以存储

2、不同类型的对象。1.2.1. 数组的缺点存储类型单一的数据容器,操作复杂(数组一旦声明好不可变)CRUD1.3. 集合的分类集合做什么1:将对象添加到集合2:从集合中删除对象3: 从集合中查找一个对象4:从集合中修改一个对象就是增删改查注意:集合和数组中存放的都是对象的引用而非对象本身Java工程师对不同的容器进行了定义,虽然容器不同,但是还是有一些共性可以抽取最后抽取了一个顶层接口,那么就形成了一个集合框架。如何学习呢?当然是从顶层学起,顶层里边具有最共性,最基本的行为。具体的使用,就要选择具体的容器了。为什么? 因为不断向上抽取的东西有可能是不能创建对象的.抽象的可能性很大,并且子类对象的

3、方法更多一些. 所以是看顶层,创建底层。那么集合的顶层是什么呢 叫做Collection集合框架体系-|Collection: 单列集合 -|List: 有存储顺序, 可重复 -|ArrayList: 数组实现, 查找快, 增删慢 由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快 -|LinkedList: 链表实现, 增删快, 查找慢 由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历, 所以效率较低 -|Ve

4、ctor: 和ArrayList原理相同, 但线程安全, 效率略低 和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低 -|Set: 无存储顺序, 不可重复 -|HashSet -|TreeSet -|LinkedHashSet-| Map: 键值对 -|HashMap -|TreeMap -|HashTable -|LinkedHashMap为什么出现这么多集合容器,因为每一个容器对数据的存储方式不同,这种存储方式称之为数据结构(data structure)注意 集合和数组中存放的都是对象的引用。1.4. 什么时候该使用什么样的集合Collection我们需要保存若干

5、个对象的时候使用集合。List如果我们需要保留存储顺序, 并且保留重复元素, 使用List.如果查询较多, 那么使用ArrayList如果存取较多, 那么使用LinkedList如果需要线程安全, 那么使用VectorSet如果我们不需要保留存储顺序, 并且需要去掉重复元素, 使用Set.如果我们需要将元素排序, 那么使用TreeSet如果我们不需要排序, 使用HashSet, HashSet比TreeSet效率高.如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet2. 集合类(Collection)Collection接口有两个子接口:List(链表|线性表)

6、 Set(集)特点:Collection中描述的是集合共有的功能(CRUD) List可存放重复元素,元素存取是有序的 Set不可以存放重复元素,元素存取是无序的java.util.Collection -| Collection 描述所有接口的共性 -| List接口 可以有重复元素的集合 -| Set 接口 不可以有重复元素的集合2:学习集合对象 学习Collection中的共性方法,多个容器在不断向上抽取就出现了该体系。发现Collection接口中具有所有容器都具备的共性方法。查阅API时,就可以直接看该接口中的方法。并创建其子类对象对集合进行基本应用。当要使用集合对象中特有的方法,在

7、查看子类具体内容。查看api 文档Collection在在java.util 中(注意是大写Collection)注意在现阶段遇到的 E T 之类的类型,需要暂时理解为object 因为涉及到了泛型.3:创建集合对象,使用Collection中的List的具体实现类ArrayList 1:Collection coll=new Arraylist();2.1. Collection接口的共性方法增加: 1:add() 将指定对象存储到容器中 add 方法的参数类型是Object 便于接收任意对象 2:addAll() 将指定集合中的元素添加到调用该方法和集合中删除: 3:remove() 将指

8、定的对象从集合中删除 4:removeAll() 将指定集合中的元素删除修改 5:clear() 清空集合中的所有元素判断 6:isEmpty() 判断集合是否为空 7:contains() 判断集合何中是否包含指定对象 8:containsAll() 判断集合中是否包含指定集合 使用equals()判断两个对象是否相等 获取: 9:int size() 返回集合容器的大小转成数组10: toArray() 集合转换数组2.1.1. 增加:public static void main(String args) Collection list = new ArrayList(); / 增加:a

9、dd() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); System.out.println(list); / 计算机网络, 现代操作系统, java编程思想 / 增加2 将list容器元素添加到list2容器中 Collection list2 = new ArrayList(); list2.add(java核心技术); list2.addAll(list); list2.add(java语言程序设计); System.out.println(list2); / java核心技术, 计算机网络, 现代操

10、作系统, java编程思想, java语言程序设计 2.1.2. 删除:/ 删除1 remove boolean remove = list2.remove(java核心技术); System.out.println(remove); / true System.out.println(list2); / /删除2 removeAll() 将list中的元素删除 boolean removeAll = list2.removeAll(list); System.out.println(removeAll);/true System.out.println(list2);/java语言程序设计2

11、.1.3. 修改:public static void main(String args) Collection list = new ArrayList(); / 增加:add() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.add(java核心技术); list.add(java语言程序设计); System.out.println(list); / 修改 clear() 清空集合中的所有元素 list.clear(); System.out.println(list); / 2.1.4.

12、判断:public static void main(String args) Collection list = new ArrayList(); / 增加:add() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.add(java核心技术); list.add(java语言程序设计); System.out.println(list); boolean empty = list.isEmpty(); System.out.println(empty);/ false boolean conta

13、ins = list.contains(java编程思想); System.out.println(contains);/ true Collection list2 = new ArrayList(); list2.add(水许传); boolean containsAll = list.containsAll(list2); System.out.println(containsAll);/ false 2.1.5. 获取:public static void main(String args) Collection list = new ArrayList(); / 增加:add() 将

14、指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.add(java核心技术); list.add(java语言程序设计); System.out.println(list); / 获取 集合容器的大小 int size = list.size(); System.out.println(size); 2.1.6. 练习:集合中添加自定义对象该案例要求完成使用集合:public static void main(String args) / 创建集合对象 Collection coll = new Arr

15、ayList(); / 创建Person对象 Person p1 = new Person(jack, 25); Person p2 = new Person(rose, 22); Person p3 = new Person(lucy, 20); Person p4 = new Person(jack, 25); / 集合中添加一些Perosn / 删除指定Person / 删除所有Person / 判断容器中是否还有Person / 判断容器中是否包含指定Person / 获取容器中Person的个数 / 将容器变为数组,遍历除所有Person 分析:1:Person类 1:姓名和年龄 2

16、:重写hashCode和equals方法 1:如果不重写,调用Object类的equals方法,判断内存地址,为false 1:如果是Person类对象,并且姓名和年龄相同就返回true 2:如果不重写,调用父类hashCode方法 1:如果equals方法相同,那么hashCode也要相同,需要重写hashCode方法 3:重写toString方法 1:不重写,直接调用Object类的toString方法,打印该对象的内存地址Person类class Person private String name; private int age; public Person() public Per

17、son(String name, int age) this.name = name; this.age = age; Override public int hashCode() return this.name.hashCode() + age; Override public boolean equals(Object obj) if (!(obj instanceof Person) return false; Person p = (Person) obj; return this.name.equals(p.name) & this.age = p.age; Override pu

18、blic String toString() return Person :name= + name + , age= + age; public static void main(String args) Person p1 = new Person(张三, 19); Person p2 = new Person(李四, 20); Person p3 = new Person(王五, 18); Collection list = new ArrayList(); list.add(p1); list.add(p2); list.add(p3); / isEmpty() 判断集合是否为空 bo

19、olean empty = list.isEmpty(); System.out.println(empty); / 返回集合容器的大小 int size = list.size(); System.out.println(size); / contains()判断集合何中是否包含指定对象 boolean contains = list.contains(p1); System.out.println(contains); / remove(); 将指定的对象从集合中删除 list.remove(p1); / clear() 清空集合中的所有元素 list.clear(); System.ou

20、t.println(list); /使用集合存储自定义对象2class Book private String name; private double price; public Book() public Book(String name, double price) this.name = name; this.price = price; public String getName() return name; public void setName(String name) this.name = name; public double getPrice() return price

21、; public void setPrice(double price) this.price = price; Override public int hashCode() return (int) (this.name.hashCode() + price); Override public boolean equals(Object obj) if (!(obj instanceof Book) return false; Book book = (Book) obj; return this.name.equals(book.name) & this.price = book.pric

22、e; Override public String toString() return book: name: + this.name + , price: + this.price; public class Demo1 public static void main(String args) Collection col = new ArrayList(); col.add(new Book(think in java, 100); col.add(new Book(core java, 200); System.out.println(col); 2.2. List-| Iterable

23、 接口 Iterator iterator() -| Collection 接口 -| List 接口 元素可以重复,允许在指定位置插入元素,并通过索引来访问元素2.2.1. List集合特有方法1:增加 void add(int index, E element) 指定位置添加元素 boolean addAll(int index, Collection c) 指定位置添加集合 2:删除E remove(int index) 删除指定位置元素3:修改 E set(int index, E element) 返回的是需要替换的集合中的元素4:查找: E get(int index) 注意: I

24、ndexOutOfBoundsException int indexOf(Object o) / 找不到返回-1 lastIndexOf(Object o) 5:求子集合 List subList(int fromIndex, int toIndex) / 不包含toIndex 2.2.1.1. 增加public static void main(String args) List list = new ArrayList(); / 增加:add() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.

25、add(java核心技术); list.add(java语言程序设计); System.out.println(list); / add,在0角标位置添加一本书 list.add(0, 舒克和贝塔); System.out.println(list); / 在list2集合的1角标位置添加list集合元素 List list2 = new ArrayList(); list2.add(史记); list2.add(资治通鉴); list2.add(全球通史); boolean addAll = list2.addAll(1, list); System.out.println(addAll);

26、 /true System.out.println(list2); 2.2.1.2. 删除public static void main(String args) List list = new ArrayList(); / 增加:add() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.add(java核心技术); list.add(java语言程序设计); System.out.println(list); / 删除0角标元素 Object remove = list.remove(0); S

27、ystem.out.println(remove); 2.2.1.3. 修改:public static void main(String args) List list = new ArrayList(); / 增加:add() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.add(java核心技术); list.add(java语言程序设计); System.out.println(list); / 修改2角标位置的书,返回的原来2角标位置的书 Object set = list.set(2,

28、 边城); System.out.println(set); /java编程思想 System.out.println(list); 查找 List list = new ArrayList(); / 增加:add() 将指定对象存储到容器中 list.add(计算机网络); list.add(现代操作系统); list.add(java编程思想); list.add(java核心技术); list.add(java语言程序设计); System.out.println(list); / 查找: E get(int index) 注意角标越界 Object set = list.get(list.size() - 1); System.out.println(set); / java语言程序设计 System.out.println(list);list.get(list.size(); /IndexOutOfBoundsException 2.2.1.4. 查找public stati

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2