java集合Collection
文章目录
- ==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相关推荐
- Java集合Collection接口中的常用方法演示
Java集合Collection接口中的常用方法演示 添加 add(Objec tobj) 和 addAll(Collection coll) 获取有效元素的个数 int size() 清空集合 vo ...
- Java集合Collection与List的关系、常见用法
关系树 [java] view plain copy print? ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快 ...
- java 先进先出的map_「 深入浅出 」java集合Collection和Map
本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解. 本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set ...
- Java 集合Collection常见知识点汇总~
看了一些所谓大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧. java.util包中包含了一系列重要的集合类,而对于集合类,主要 ...
- Java集合 Collection
Jdk提供了一些特殊的类,用来保存数量不确定的对象,存储任意类型对象,长度可变.这些类统称为集合. 集合类位于Java.util包中,按存储结构分为Collection单列集合和Map双列集合. Co ...
- Java—一篇读懂java集合(Collection/Map)及Lambda表达式
集合简介 在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象. Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...
- Java 集合 Collection、Iterator
Java集合分为Set(无序.不可重复).List(有序.重复).Queue(队列)和Map(映射关系) Java集合概述 数组元素既可以是基本类型的值,也可以是对象(实际保存对象的引用变量) 集合只 ...
- Java集合Collection源码系列-ArrayList源码分析
Java集合系列-ArrayList源码分析 文章目录 Java集合系列-ArrayList源码分析 前言 一.为什么想去分析ArrayList源码? 二.源码分析 1.宏观上分析List 2.方法汇 ...
- Java集合---Collection接口的常用方法
Collection常用方法 size() 功能说明 返回当前集合中元素的总数量 代码实现 import java.util.ArrayList; import java.util.Collectio ...
最新文章
- php 转义 回车 空格 file put content,为什么在服务器上php里执行file_put_contents创建文件返回是false呢,文件目录已经设置为777的权限了,不解...
- WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞
- 【codevs3110】一把鼻涕一把泪的堆排序
- 中国石油大学计算机控制实验,《计算机控制》实验讲义.doc
- 【DBA之路】关于连接不上数据库
- 关于DOS和命令行的故事
- 在ArcGIS Desktop中选择地物要素的方法(二)
- Lightbox插件
- matlab中转置矩阵的特征值,矩阵乘以矩阵的转置运算的解析
- python(模块)xlwt
- 关于计算机取代学校的英语作文,关于网络教室将取代传统的教室英语作文
- 扫描到pc服务器位置,打印机s2520 扫描到PC服务器之通讯录怎么设置
- JAVA除数为0报错?
- 二层交换机,三层交换机,四层交换机的区别
- CSAPP实验1:Data Lab笔记
- 高德地图 SDK集成 定位 地理编码 搜索 经纬度获取 功能工具类
- java poi导出excel,合并单元格
- CentOS 7 的安装教程
- matlab zscore函数 数据的标准化处理
- 什么!?改BUG最牛的人竟然是一位皇帝!!集合前来觐见!