Java-集合第一篇认识Java集合
1、4种集合类型
List:有序可重复集合。
Queue:队列集合。
Set:无序不可重复集合。
-------------------------------
Map:关系映射集合。
2、所有的集合类都位于java.util包下。java.util.concurrent下在java5后增加了多线程支持的集合类。
3、数组中的元素可以是基本数据类型的值,也可以是对象。而集合中只能保存对象。
4、集合的派生关系
Collection体系:LinkedList最特殊,有两个父接口。queue与List类似。
Map体系:
Map保存的每项数据都是key-value对。
总结:由于queue类似于List,所以集合大体可以分为3类,即List、Map、Set。访问List集合中的元素,可以通过元素的索引来访问;如果访问Map中的元素,可以根据每项元素的key来访问其value;如果访问Set中的元素,只能通过元素本身(这也是Set不允许元素重复的原因)。
5、Collection接口,是Set、Queue、List接口的父接口。
其定义的方法有:
1》boolean add(Object o):向集合中添加一个元素。集合对象被添加操作改变了,则返回true。
2》boolean addAll(Collection c):将集合c中的所有元素添加到指定的集合中。集合对象被添加操作改变了,则返回true。
3》void clear():清除集合里的所有元素,将集合长度变为0。
4》void contains(Object o):返回集合中是否包含指定元素。
5》boolean containsAll(Collection c):返回集合里是否包含集合c里的所有元素。
6》boolean isEmpty():返回集合是否为空。当集合长度为0时返回true,否则返回false。
7》Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
8》boolean remove(Objeact o):删除集合中的指定元素o,当集合中包含了一个或者多个元素o时,该方法只删除第一个符合条件的元素,该方法将返回true。
9》boolean removeAll(Collection c):从集合中删除集合c里包含的所有元素(相当于调用该方法的集合减集合c),如果删除了一个或者一个以上的元素,则该方法返回true。
10》boolean retainAll(Collection c):从集合中删除集合c里不包含的元素(相当于把调用该方法的集合变成该集合和集合c的交集),如果该操作改变了调用该方法的集合,则该方法返回true。
11》int size():该方法返回集合里元素的个数。
12》Object[] toArray():该方法把集合转换成数据,所有的集合元素变成对应的数据元素。
6、Iterator接口也是Java集合框架的成员,Iterator主要用于遍历(迭代)Collection集合中的元素,Iterator对象也被称为迭代器。其定义了如下4个方法:
1》bolean hasNext():如果被迭代的集合还有元素没有被迭代完,则返回true。
2》Object next():返回集合里的下一个元素。
3》void remove():删除集合里上一次next方法返回的元素。
4》void forEachRemaining(Consumer action):Java 8为Iterator新增的默认方法,该方法可以使用Lambda表达式遍历集合。
使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传递给了迭代变量,即修改迭代变量的值对集合元素本身没有任何影响。通过Iterator的remove()方法删除上一次next()方法返回的集合元素。
7、使用foreach循环遍历集合元素
for(String book:books){
System.out.println(book);
}
使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传递给了迭代变量,修改迭代变量值是无意义的。迭代过程当中不能修改集合中的元素,比如调用集合的remove()方法。
8、Java 8新增的Predicate操作集合
Java 8为Collection集合新增一个removeIf(Predicate filter)方法,该方法将会批量删除符合filter条件的所有元素。Predicate也是函数式接口。
Collection books=new HashSet();
...
books.removeIf(ele->((String)ele).length()<10);
9、Java 8新增的Stream操作集合
Java 8还新增了Stream、IntStream、LongStream、DoubleStream等流式API。
Java-集合第一篇认识Java集合的更多相关文章
- 【JAVA并发第一篇】Java的进程与线程
1.进程与线程 1.1.进程 进程可以看作是程序的执行过程.一个程序的运行需要CPU时间.内存空间.文件以及I/O等资源.操作系统就是以进程为单位来分配这些资源的,所以说进程是分配资源的基本单位. ( ...
- 从.Net到Java学习第一篇——开篇
以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...
- 学习java随笔第一篇:搭建java平台(java se)
电脑系统:windows8 在这里介绍一下java平台的3个版本: Java SE--Java Standard Edition,Java的标准版,主要用于桌面级的应用和数据库开发. Java EE- ...
- Java【第一篇】基本语法之--关键字、标识符、变量
关键字 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写 标识符 Java 对各种变量.方法和类等要素命名时使用的字符序列称为标识符凡是自己可以起名字的地 ...
- java基础第一篇
1.JDK:Java Development kit 能对Java程序编译,运行 包含JRE JRE:Java Runtime Environment 能对Java程序运行 包含JVM和一些核心类库 ...
- java分享第一天(java环境及原理)
1 JDK的安装目录中:环境变量中增加JAVA_HOME变量:JDK安装目录:在path中添加JDK的bin目录 2 java执行的顺序是: 1 用java编译器javac XXX.java ...
- JAVA基础第一章-初识java
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 从今天开始,我将会持续更新java基础知识,欢迎关注. java的诞生 ...
- 《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解
这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序. * 排序有两种方式 * A:自然排序: 从小到大排序 * B:比较器排序 Comp ...
- 《java入门第一季》之集合框架(Collection小儿子Set集合)
/* * Collection主要的连个儿子: * |--List * 有序(存储顺序和取出顺序一致),可重复 * |--Set * 无序(存储顺序和取出顺序不一致),唯一 * * H ...
随机推荐
- 针对360浏览器读取不了cookie的问题
今天学习cookie的时候发现在360和谷歌浏览器下设置cookie打开是空白的!经过一番搜索才知道在本地是访问不了cookie只能在服务器端进行访问,但是仍然可以在火狐下进行访问
- Behavior行为
创建公用的js 模块 封装起来 let behavior = Behavior({//定义属性 properties: { type: String, img: String, content: St ...
- IO流二
1 数据流(了解) 1.1 概述 为了方便的操作java语言的基本数据类型和String类型的数据,可以使用数据流. 数据流的分类: DataInputStream DataOutputStream ...
- Django【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)
django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); ...
- Django【第19篇】:Django之extra
extra过滤 extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params= ...
- springboot日期转换器
注:该功能并非springboot特有的功能,springmvc同样具有 一.使用方法 创建一个DateConverter类实现Converter接口 注:importorg. ...
- mybatis学习$与#号取值区别
1,多个参数传递用map或实体封装后再传给myBatis, mybatis学习$与#号取值区别 #{} 1.加了单引号, 2.#号写是可以防止sql注入,比较安全 select * from use ...
- 使用 Markdown 写博客
后台设置(左侧边栏区找到-设置默认编辑器). 设置为 Markdown 后保存,即可在编辑新博客时生效.
- Vuex的五个核心属性
Vuex的五个核心属性 Vuex的五个核心概念 本文参考自Vue文档,说的非常详细,建议看文档. Vuex是什么? VueX 是一个专门为 Vue.js 应用设计的状态管理架构,统一管理和维护各个vu ...
- hashcode、equals、HashMap间的关系
1.从Object说起package com.hallo.collection; public class ObjectDemo { public static void main(String[] ...