文章目录

  • ==Collection集合==
    • Collection概述
    • Collection集合常用方法
    • Collection集合的遍历之iterator
      • 概述
      • Iterator中的常用方法
      • 集合使用步骤图解
      • 案例:Collection集合存储学生对象并遍历
  • ==集合嵌套==
    • 错误1

Collection集合

Collection概述

  • 位于软件包java.util包下,所以使用的时候需要导包
  • interface Collection < E >,其< E >是泛型,表示集合中元素的类型
  • public interface Collection< E > extends Iterable< E > 表示Collection是一个接口,并且继承自Iterable接口
  • Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
  • Collection用于存储一些列符合某种规则的元素;
  • Collection是集合层次结构中的根接口;集合表示一组被称为其元素的对象;
  • 一些集合允许重复元素(List),而其他集合不允许(Set);
  • JDK不提供Collection接口的任何直接实现类,它提供了更具体的子接口的实现,如Set和List子接口的实现类,创建对象必须使用子接口Set和List的实现类创建
  • 创建Collection集合的对象:①多态的形式②具体的实现类ArrayList

案例:

package itheima28;
public class CollectionDemo {public static void main(String[] args) {//创建Collection对象Collection<String> c = new ArrayList<String>();//添加元素:boolean add(E e)c.add("hello");c.add("java");//输出collection对象System.out.println(c);//这里正常来讲输出的是一串带有包名的字符串,如果要是输出不是此内容,则说明toString方法被重写了。//输出结果是 [hello, java]// 说明toString被重写了}
}

Collection集合常用方法

方法名 说明
boolean add(E e) 添加元素
boolean remove(Object o) 从集合中移除指定的元素
boolean contains (Object o) 判断集合中是否存在指定的元素
boolean isEmpty() 判断集合是否为空
void clear() 清空集合中的元素
int size() 集合的长度,也就是集合中元素的个数
Iterator< E > iterator() 返回此集合中元素的迭代器

理解总结xhj:

  • Alt + 7 打开一个窗口,能够看到类的所有信息,其中7是数字不是f7按键。
  • Collection接口中的方法,除了size和clear其余的返回值都是boolean,且参数都是具体的集合元素。

add

 //创建Collection集合对象
Collection<String> c = new ArrayList<String>();//boolean add(E e)方法
System.out.println(c.add("hello"));//返回值是true
System.out.println(c.add("java"));//返回值是true
System.out.println(c.add("java"));
System.out.println(c);//输出[hello]  [hello, java, java]* ArrayList对象可以添加重复元素
* ArrayList对象.add的结果都是true吗?
选中 ArrayList方法,alt + enter按键跟随到ArrayList文件中,找到add方法。
快捷方式是:在Idea工具栏上选择View==》Tool Windows==》Structure 即可。
/*   根据ArrayList中关于方法add的描述来看,只要调用add返回值就是truepublic boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;
return true;
}*/

ArrayList对象.add 的结果都是true

remove

//boolean remove(E e)
System.out.println(c.remove("java"));* 删除的元素存在于集合中,则会被删除,且对象.remove返回值是true
System.out.println(c.remove("javaee"));* 删除的元素不存在与集合中,则不会删除,且对象.remove返回值是false
System.out.println(c);

clear

c.clear();//清空集合中的所有元素
System.out.println(c);//输出结果是[]

contains

//boolean contains(E e)
System.out.println(c.contains("java"));//true* 要判断的元素在集合中,返回true;不在集合中,返回false
System.out.println(c.contains("javaee"));//false

size

System.out.println(c.size());//2
//输出结果是2,原本是[hello, java, java];删除了一个java,再输出长度就是2了

代码:

package itheima28;
public class CollectionDemo {public static void main(String[] args){//创建Collection集合对象Collection<String> c = new ArrayList<String>();//boolean add(E e)方法System.out.println(c.add("hello"));//返回值是trueSystem.out.println(c.add("java"));//返回值是trueSystem.out.println(c.add("java"));System.out.println(c);//输出[hello]  [hello, java]//可以添加重复元素,// ArrayList对象.add的结果都是true吗?// 选中 ArrayList方法,alt + enter按键跟随到ArrayList文件中,找到add方法。快捷方式是:在Idea工具栏上选择View==》Tool Windows==》Structure 即可。/*   根据ArrayList中关于方法add的描述来看,只要调用add返回值就是truepublic boolean add(E e) {ensureCapacityInternal(size + 1);  // Increments modCount!!elementData[size++] = e;return true;}*///boolean remove(E e)System.out.println(c.remove("java"));//删除的元素存在于集合中,则会被删除,且对象.remove返回值是trueSystem.out.println(c.remove("javaee"));// 删除的元素不存在与集合中,则不会删除,且对象.remove返回值是falseSystem.out.println(c);// void clear()
//        c.clear();//清空集合中的所有元素 返回值是[]
//        System.out.println(c);//boolean contains(E e)System.out.println(c.contains("java"));//true//要判断的元素在集合中,返回true;不在集合中,返回falseSystem.out.println(c.contains("javaee"));//false//int size()System.out.println(c.size());//2//输出结果是2,原本是[hello, java, java];删除了一个java,再输出长度就是2了}
}

Collection集合的遍历之iterator

概述

  • iterator:迭代器,集合的专用遍历方式。
  • Collection的方法iterator()——作用就是返回此集合中元素的迭代器,返回值就是Iterator< E >。也就是说集合中元素的迭代器是用Collection对象.iterator()返回的
  • 迭代器是通过集合的iterator()方法得到的,所以说它是依赖于集合而存在的
  • Interface Iterator< E > 是一个接口;软件包是java.util,表示使用该接口需要导包;这里的泛型< E >和集中的泛型是一致的;

Iterator中的常用方法

方法名 说明
E next() 返回迭代中的下一个元素
boolean hasNext() 如果迭代具有更多元素,则返回true

创建Collection实现类ArrayList的对象

//创建Collection集合
采用多态的形式 : 父类名 变量名 = new 子类名();或者 接口名 变量名 = new 实现类名(); 此次采用后者形式Collection<String> c = new ArrayList<String>();// 集合添加元素c.add("hello");c.add("java");c.add("javaee");System.out.println(c);//[hello, java, javaee]

迭代器的获取,通过iterator方法

集合对象.Iterator() 迭代器 返回值是Iterator<E>Iterator<String> it = c.iterator();已知Iterator是一个接口,也就是说c.iterator返回的是Iterator实现类Itr()的对象
c.iterator返回值内容介绍如下:①选中iterator跟进,进入Collection接口里面,
我们要找的是具体的实现类中的方法iterator,所以需要找到ArrayList实现类。②选中ArrayList跟进,找到iterator方法,public Iterator<E> iterator() {return new Itr();}
方法名称是iterator,返回的是new Itr()对象,返回值是Iterator< E >一个接口,
说明返回的是Iterator的一个实现类对象。说明Itr()应该实现了Iterator这个接口private class Itr implements Iterator<E> {....}内部类,一个类中定义了一个类。一般采用private修饰。

E next()方法,返回迭代器中的元素

System.out.println(it.next());//hello
System.out.println(it.next());//java
System.out.println(it.next());//javaee
System.out.println(it.next());//NoSuchElementException 抛出一个异常,意思是:表示该请求的元素不存在

boolean hasNext()方法

 为了解决迭代器.next存在问题,使用hasNext进行判断while(it.hasNext()){String s = it.next();System.out.println(s);}

案例:

package itheima29;
public class IteratorDemo {public static void main(String[] args) {//创建Collection集合// 采用多态的形式 : 父类名 变量名 = new 子类名();或者 接口名 变量名 = new 实现类名(); 此次采用后者形式Collection<String> c = new ArrayList<String>();// 集合添加元素c.add("hello");c.add("java");c.add("javaee");System.out.println(c);//[hello, java, javaee]// 集合对象.Iterator() 迭代器 返回值是Iterator<E>Iterator<String> it = c.iterator();//已知Iterator是一个接口,也就是说c.iterator返回的是Iterator实现类Itr()的对象// c.iterator返回值内容介绍如下:/*①选中iterator跟进,进入Collection接口里面,我们要找的是具体的实现类中的方法iterator,所以需要找到ArrayList实现类。②选中ArrayList跟进,找到iterator方法,public Iterator<E> iterator() {return new Itr();}方法名称是iterator,返回的是new Itr();对象,返回值是Iterator< E >一个接口,说明返回的是Iterator的一个实现类对象。说明Itr()应该实现了Iterator这个接口private class Itr implements Iterator<E> {....}内部类,一个类中定义了一个类。一般采用private修饰。*/// E next()方法/*System.out.println(it.next());//helloSystem.out.println(it.next());//javaSystem.out.println(it.next());//javaeeSystem.out.println(it.next());//NoSuchElementException 抛出一个异常,意思是:表示该请求的元素不存在*///boolean hasNext()方法//为了解决迭代器.next存在问题,使用hasNext进行判断while(it.hasNext()){String s = it.next();System.out.println(s);}}
}

集合使用步骤图解


集合使用步骤:
①创建集合对象

Collection<String> c = new ArrayList<String>()
采用多态的形式  接口名 变量名 = new 接口实现类名()

②添加对象

1 创建元素
String s = “xxxxx”;
2 添加元素到集合
集合变量.add(元素);

③遍历元素

1 通过集合对象获取迭代器对象
Collection< E > 迭代器对象 = 集合对象.iterator();
2 通过迭代器对象的hasNext()方法判断是否有元素
迭代器对象.hasNext() 返回值是boolean true表示有元素;false表示没有元素
3 通过迭代器对象的next()方法获取下一个元素
迭代器对象.next()

案例:Collection集合存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
思路:定义学生类、创建Collection集合对象、创建学生对象、把学生添加到集合、通过迭代器遍历集合元素

package itheima29.test1;
public class CollectionDemo2 {public static void main(String[] args) {//2 创建集合对象Collection<Student> c = new ArrayList<Student>();// 3 创建学生对象Student s = new Student("张三",25);Student s2 = new Student("李四",24);Student s3 = new Student("王五",23);//4 将元素添加到集合中c.add(s);c.add(s2);c.add(s3);//5 通过迭代器遍历集合元素Iterator<Student> it = c.iterator();while(it.hasNext()){Student st = it.next();System.out.println(st.getName() + ", " + st.getAge());}}
}

集合嵌套

常见的嵌套形式:
list嵌套list、list嵌套map、map嵌套map、map嵌套list。
任何集合内部都可以存储其他任何集合。

错误1

incompatible types: ArrayList<ArrayList< Integer>> cannot be converted to List<List< Integer>>

代码错误分析

操作:
List<List<Integer>> = new ArrayList<ArrayList<Integer>>();报错:
incompatible types: ArrayList<ArrayList<Integer>> cannot be converted to List<List<Integer>>解决:
List<List<Integer>> = new ArrayList<List<Integer>>();
将第二个ArrayList改为List就可以了。

原因:
这是一个泛型应用的常踩坑。

java集合Collection相关推荐

  1. Java集合Collection接口中的常用方法演示

    Java集合Collection接口中的常用方法演示 添加 add(Objec tobj) 和 addAll(Collection coll) 获取有效元素的个数 int size() 清空集合 vo ...

  2. Java集合Collection与List的关系、常见用法

    关系树 [java] view plain copy print? ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快 ...

  3. java 先进先出的map_「 深入浅出 」java集合Collection和Map

    本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解. 本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set ...

  4. Java 集合Collection常见知识点汇总~

    看了一些所谓大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧. java.util包中包含了一系列重要的集合类,而对于集合类,主要 ...

  5. Java集合 Collection

    Jdk提供了一些特殊的类,用来保存数量不确定的对象,存储任意类型对象,长度可变.这些类统称为集合. 集合类位于Java.util包中,按存储结构分为Collection单列集合和Map双列集合. Co ...

  6. Java—一篇读懂java集合(Collection/Map)及Lambda表达式

    集合简介   在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象.   Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...

  7. Java 集合 Collection、Iterator

    Java集合分为Set(无序.不可重复).List(有序.重复).Queue(队列)和Map(映射关系) Java集合概述 数组元素既可以是基本类型的值,也可以是对象(实际保存对象的引用变量) 集合只 ...

  8. Java集合Collection源码系列-ArrayList源码分析

    Java集合系列-ArrayList源码分析 文章目录 Java集合系列-ArrayList源码分析 前言 一.为什么想去分析ArrayList源码? 二.源码分析 1.宏观上分析List 2.方法汇 ...

  9. Java集合---Collection接口的常用方法

    Collection常用方法 size() 功能说明 返回当前集合中元素的总数量 代码实现 import java.util.ArrayList; import java.util.Collectio ...

最新文章

  1. php 转义 回车 空格 file put content,为什么在服务器上php里执行file_put_contents创建文件返回是false呢,文件目录已经设置为777的权限了,不解...
  2. WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞
  3. 【codevs3110】一把鼻涕一把泪的堆排序
  4. 中国石油大学计算机控制实验,《计算机控制》实验讲义.doc
  5. 【DBA之路】关于连接不上数据库
  6. 关于DOS和命令行的故事
  7. 在ArcGIS Desktop中选择地物要素的方法(二)
  8. Lightbox插件
  9. matlab中转置矩阵的特征值,矩阵乘以矩阵的转置运算的解析
  10. python(模块)xlwt
  11. 关于计算机取代学校的英语作文,关于网络教室将取代传统的教室英语作文
  12. 扫描到pc服务器位置,打印机s2520 扫描到PC服务器之通讯录怎么设置
  13. JAVA除数为0报错?
  14. 二层交换机,三层交换机,四层交换机的区别
  15. CSAPP实验1:Data Lab笔记
  16. 高德地图 SDK集成 定位 地理编码 搜索 经纬度获取 功能工具类
  17. java poi导出excel,合并单元格
  18. CentOS 7 的安装教程
  19. matlab zscore函数 数据的标准化处理
  20. 什么!?改BUG最牛的人竟然是一位皇帝!!集合前来觐见!

热门文章

  1. Cisco® Catalyst® 8000V 边缘软件 (Catalyst 8000V) 17.11.1a 发布 - 虚拟路由器
  2. 跳槽对个人发展的利与弊是什么?
  3. 用python写一个小程序,解决买水果的问题?
  4. 用弦截法求解方程的根
  5. 今人不见古时月,今月曾经照古人
  6. 谷歌浏览器 input 默认填充问题
  7. 环网柜开关柜开闭所局部放电在线监测装置/MCSG-PD-6016空间超高频局放在线监测装置系统在10kV开关柜中的应用
  8. Vue实战项目开发--Vue中的动画特效
  9. 新浪BLOG上传图片的方法
  10. LARAVEL敏感信息泄漏