集合框架(一)——概述
集合框架构成图:
大纲:
1. 数组容器和集合的区别;
2. 集合框架的由来;
3. Collection中的共性方法
4. 迭代器,及其原理,以及出现的好处
5. 集合中两个注意的小细节
6. Collection的两个子集List Set 简介及其子类
7. 集合的技巧掌握
————————————————————————————————————————————————————————————————
在开始集合框架总结之前,先得明确【集合】是什么?
集合是:1.用于存储对象的容器。2.该容器的长度是可变的。
一,数组容器和集合的区别;
在这之前学过的【数组容器和集合都可以用来存储数据,那么他们有啥区别呢?】
1. 集合长度是可变的;数组长度固定的;
2. 集合中只能存储对象;数组中既可以存储对象,又可以存储基本类型数据。
3. 集合中存储的对象可以是任意类型的;数组中只能存储同一类型的对象。
【重点注意:】
集合只能存储对象,经常犯的错误:集合可以存储整型之类的基本数据类型,其实那是通过自动装箱,拆箱机制,转为了Integer对象。
二: 集合框架的由来;
用来存储对象的容器虽然有很多并且结构不同,但是都具备着共性,可以不断向上抽取,最终就形成集合框架,该框架的顶层之一就是Collectionn接口。 该接口中定义了集合框架中最共性的功能。最终使用的时候,其实使用的是该框架最子类的对象。
【集合框架的小细节】
StringBuffer——放进去是一坨了,不能区别单个的了!
框架,数组————放进去能区分,拿出来也能区分了。
三:Collection中的共性方法;
【Collection中的共性方法】——【掌握程度:不用查API文档就可以写出来】
作为容器应该具备的方法:添加,删除,判断,获取。
1. 添加方法:
boolean add(Object e)—— 一次只能添加一个元素;
boolean addAll(Collection<? extends E> c)—— 将一个参数容器中的所有元素添加到当前容器中。
2. 删除方法:
boolean remove(Object e) 删除一个指定对象,
boolean removeAll(Collection<?> c) 删除指定Collection中和本Collection中相同的元素。
void clear ():直接将集合中的元素清空。
3. 判断方法:
Boolean contains (Object)是否包含指定元素
boolean containsAll(Collection<?> c) 是否包含指定容器中的元素。
boolean imEmpty(): 是否有元素。
4. 获取元素个数:
int size (),获取元素的个数;
5.取交集
boolean retainAll(Collection<?> c)
保留和指定collection集合中相同的元素,不相同的元素会被删除。
6 将集合转成数组;
Object[] toArray()
【7】取出元素的方法——【重点】
Iterator<E> iterator()
四: 迭代器,及其原理,以及出现的好处;
【迭代器】取出集合中元素的方式的一个对象。该对象本身就内置在容器中。
如何获取到集合的迭代器?
可以通过iterator()方法完成,该方法返回一个Iterator类型对象。 【迭代器接口的原理】 将每一个容器中的取出方式进行了封装。并对外暴露。这样无论是什么容器或者数据结构,只要内部取出方式实现了Iterator接口, 都可以通过该接口取出这些容器中的元素。 【迭代器接口的好处】 它的出现,将容器的取出方式和容器的数据结构分离,降低了耦合性。而取出方式因为直接在访问容器中的元素,并依赖具体的数据结构,所以被定义在了容器中。通过内部类在实现Iterator接口。【NOTICE】——只要是Collection集合中的容器,迭代器是通用取出方式。 【用迭代器取出时,其实取出的也是引用。】 【代码体现】
package api.iterator.demo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class IteratorDemo {public static void main(String[] args) {//创建集合。 Collection coll = new ArrayList();//添加元素。coll.add("abc1");coll.add("abc2");coll.add("abc3");/*//获取该集合的迭代器对象。Iterator it = coll.iterator(); //这个对象不用new ,本身内置于该接口中。//使用迭代器对象中的方法完成元素的获取。 while(it.hasNext()){System.out.println(it.next());}*///将while改成for结构。开发的时候建议写for。for(Iterator it = coll.iterator(); it.hasNext(); ){System.out.println(it.next());//next()可以取出元素。而且自动往下取} }
}
五:集合中要注意的两个细节;
【集合小细节1】
1.存储时,add可以接收任意类型的对象因为参数类型为 Object。
所以对象元素存入时都被提升为Object。
2.其实在集合中真正存储的都是对象的引用。
【用迭代器取出时,其实取出的也是引用。】
(取出的是引用,引用是个地址值,那么又该如何拿出这个地址值对应的元素呢?)
【NOTICE】
coll.add(5),不能存储基本数据类型,
jdk1.5以后,有了自动装箱机制,相当于new Integer(5),装箱Integer.valueOf(5);
等同于coll.add(Integer.valueOf(5));
【集合小细节2】——在集合中存储自定义对象;
1. 对自定义对象的描述。
存储时,都被提升为了Object;取出时,如果要使用自定义对象的特有方法,一定要进行向下转型。
注意事项:在迭代时,循环中只要有一个next()即可。
System.out.println(((Person)it.next()).getName()+ ":" + ((Person)it.next()).getAge( ));
否则将会抛出:NoSuchElementException!
java.util.NoSuchElementException
【如何往集合中存储自定义对象?】
ArrayListDemo2.java
HashSetDemo.java
TreeSetTest.java
六: Collection的两个子集List && Set 简介及其子类:
集合框架(三)——Collection 子集 ——————List 及其 小弟们!
集合框架(四)——Collection 子集 ——————Set及其 小弟们!
七:集合的技巧性掌握;
1. 明确具体集合对象名称的后缀:
如果后缀是List,都所属于List体系,通常都是非同步的。
如果后缀是Set,都所属于Set体系通常都是非同步的。
这些体系中的其他子类对象,后缀不是所属接口名的,一般都是同步的。
这在常用子类对象中通用。
2. 明确数据结构:
对于jdk1.2版本的子类对象。后缀名是所属的体系。
前缀名就是数据结构的名称。
比如:
ArrayList:看到Array,就要明确是数组结构;查询快
LinkedList:看到Link,就要明确链表结构,就要想到add get remove和 first last结合的方法。增删快
HashSet:看到hash ,就要明确是哈希表,查询快,而且所存储的对象具有唯一性。
就要想到元素必须覆盖hashCode方法和 equals方法。
TreeSet:就看到Tree,就要明确是二叉树,可以对元素排序;
就要想到两种排序方式:
自然排序:Comparable接口,覆盖compareTo(一个参数)java.lang
比器排序:Comparator接口,覆盖compare(两个参数):java.util
判断元素唯一性的依据就是比较方法的返回结果 return 0;
集合框架(一)——概述相关推荐
- Set集合框架的概述及应用
Set集合框架的概述及应用 我们可以通过查询API文档来来了解Set集合框架 Set集合框架就是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) ...
- 集合框架--集合框架体系概述
集合框架体系主要如上图所示,集合类主要分为两大类:Collection和Map. 先简单概述几个相关问题. 1.先说明下什么是集合? 当数据多了需要存储,需要容器,但是数据的个数又不确定的时候,无法使 ...
- 集合框架(泛型概述和基本使用)
package cn.itcast_01; import java.util.ArrayList; import java.util.Iterator; /* * ArrayList存储字符串并遍历 ...
- Java集合框架概述及Collection接口方法讲解
Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储.另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容 ...
- JAVA语言基础-面向对象(集合框架02List、泛型)
2019独角兽企业重金招聘Python工程师标准>>> 16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字 ...
- 黑马程序员_java之集合框架
android培训.物联云计算培训. java培训.期待与您交流! ---------- 集合框架 集合框架体系概述 集合:存储对象最常用的一种方式 数组集合作为容器区别:数组,可存储对象.基本数据类 ...
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...
- Java基础_集合框架1
一.集合框架(体系概述) 为什么会出现集合框架(集合类)? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合框架 ...
- (Java集合框架)集合框架概述和Collection常用功能及遍历
文章目录 集合概述 集合框架 Collection 常用功能 代码演示 集合遍历 Iterator接口 迭代器的实现原理 增强for 代码演示 集合概述 集合:集合是java中提供的一种容器,可以用来 ...
- Java集合框架——概述
集合概述 集合(collection)--有时也被称作容器, 用来把具有相同性质的一类东西,汇聚成一个整体.Collections被广泛应用于存储,获取及操作数据. 集合框架 集合框架(Collect ...
最新文章
- C语言------运算符和表达式
- unet_3plus
- WordPress中J.parentNode’为空或不是对象的解决方法
- INRIX自动驾驶汽车平台扩大使用范围 帮助城市管理交通
- 淘商们用数据精细化分析客户群体
- PhoneGap工作原理及需改进的地方(转)
- Django从理论到实战(part44)--JsonResponse类
- JPA 2.1如何成为新的EJB 2.0
- LeetCode 355. 设计推特(哈希map+set)
- 2017.9.2 最大半联通子图 思考记录
- promise的理解和使用-尚硅谷教程笔记
- WhatsApp创始人:从领救济到身价68亿
- Wireshark抓包体验
- 程序员段子,看不懂不是真的猿
- Android使用App Architecture打造最佳体验和高质量应用《一》
- 【FPGA入门十二】1bit全加器实现计算8位二进制数中1的个数
- win10给扩展屏设置单独的壁纸(win10自带这个功能)
- 《海外社交媒体营销》一一第1章 电商创业起步
- 关于移位密码的破解问题
- edg击败we视频_超神圣枪无情屠杀 EDG击败WE全取三分