集合框架构成图:

大纲:

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;

集合框架(一)——概述相关推荐

  1. Set集合框架的概述及应用

    Set集合框架的概述及应用 我们可以通过查询API文档来来了解Set集合框架 Set集合框架就是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) ...

  2. 集合框架--集合框架体系概述

    集合框架体系主要如上图所示,集合类主要分为两大类:Collection和Map. 先简单概述几个相关问题. 1.先说明下什么是集合? 当数据多了需要存储,需要容器,但是数据的个数又不确定的时候,无法使 ...

  3. 集合框架(泛型概述和基本使用)

    package cn.itcast_01; import java.util.ArrayList; import java.util.Iterator; /* * ArrayList存储字符串并遍历 ...

  4. Java集合框架概述及Collection接口方法讲解

    Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储.另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容 ...

  5. JAVA语言基础-面向对象(集合框架02List、泛型)

    2019独角兽企业重金招聘Python工程师标准>>> 16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字 ...

  6. 黑马程序员_java之集合框架

    android培训.物联云计算培训. java培训.期待与您交流! ---------- 集合框架 集合框架体系概述 集合:存储对象最常用的一种方式 数组集合作为容器区别:数组,可存储对象.基本数据类 ...

  7. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  8. Java基础_集合框架1

    一.集合框架(体系概述) 为什么会出现集合框架(集合类)? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合框架 ...

  9. (Java集合框架)集合框架概述和Collection常用功能及遍历

    文章目录 集合概述 集合框架 Collection 常用功能 代码演示 集合遍历 Iterator接口 迭代器的实现原理 增强for 代码演示 集合概述 集合:集合是java中提供的一种容器,可以用来 ...

  10. Java集合框架——概述

    集合概述 集合(collection)--有时也被称作容器, 用来把具有相同性质的一类东西,汇聚成一个整体.Collections被广泛应用于存储,获取及操作数据. 集合框架 集合框架(Collect ...

最新文章

  1. C语言------运算符和表达式
  2. unet_3plus
  3. WordPress中J.parentNode’为空或不是对象的解决方法
  4. INRIX自动驾驶汽车平台扩大使用范围 帮助城市管理交通
  5. 淘商们用数据精细化分析客户群体
  6. PhoneGap工作原理及需改进的地方(转)
  7. Django从理论到实战(part44)--JsonResponse类
  8. JPA 2.1如何成为新的EJB 2.0
  9. LeetCode 355. 设计推特(哈希map+set)
  10. 2017.9.2 最大半联通子图 思考记录
  11. promise的理解和使用-尚硅谷教程笔记
  12. WhatsApp创始人:从领救济到身价68亿
  13. Wireshark抓包体验
  14. 程序员段子,看不懂不是真的猿
  15. Android使用App Architecture打造最佳体验和高质量应用《一》
  16. 【FPGA入门十二】1bit全加器实现计算8位二进制数中1的个数
  17. win10给扩展屏设置单独的壁纸(win10自带这个功能)
  18. 《海外社交媒体营销》一一第1章 电商创业起步
  19. 关于移位密码的破解问题
  20. edg击败we视频_超神圣枪无情屠杀 EDG击败WE全取三分

热门文章

  1. 深度学习前馈、卷积、循环神经网络介绍及pytorch实践
  2. UG NX 10.0 GRIP 二次开发
  3. python——赋值
  4. 数学对计算机的重要性
  5. Java的同步锁和同步方法(synchronized)
  6. iCheck组件使用方法总结
  7. 六维力数据中去除重力、漂移力任务---ros之talker、listener、ur、坑
  8. easyUi input标签的失去焦点事件
  9. 解决backtrack5连接不上ssh问题
  10. python斐波拉契数列(Fibonacci)