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 ...
随机推荐
- 作用域变量 var
var没有块级作用域,定义后在当前闭包中都可以访问,如果变量名重复,就会覆盖前面定义的变量,并且也有可能被其他人更改. 变量名重复,就会覆盖前面定义的变量,并且也有可能被其他人更改: console. ...
- 自学semantic UI个人博客首页模板
以下是代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <m ...
- java -cp与java -jar的区别
java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”格式:java -cp .;myClass.j ...
- 【GDOI2014模拟】服务器
前言 直到比赛最后几分钟,才发现60%数据居然是一个水dp,结果没打完. 题目 我们需要将一个文件复制到n个服务器上,这些服务器的编号为S1, S2, -, Sn. 首先,我们可以选择一些服务器,直接 ...
- ie下,首页打开页面非常慢
手里的项目,登录页面在IE下首次进入页面非常的慢,应该不只是登录页面,因为项目我也是半路接手的.开始以为是js的问题,后台把所有的代码都去掉,就一个空白的页面,然后慢慢的试试,最后才发现是一个CSS文 ...
- Oracle RAC业务bug导致部分数据丢失处理
问题描述:业务部门在10月26日发现某张基础表中丢失部分数据,系为9月份录入系统的基础数据丢失 Oracle RAC环境做的RMAN备份,10月18日做过expdp数据泵备份,丢失数据表名为T_GL_ ...
- 手把手搭建K3cloud插件开发环境
最近几天在配置K3cloud开发环境,发现不论是产品论坛还是百度出来的结果,都不够满意,很多大咖给提供的环境搭建手册都是那个云山雾罩的PPT 也就是这个open.kingdee.com/K3Cloud ...
- Python Flask框架入门
序言 Flask封装功能不及Django完善,性能不及Tornado,但是Flask的第三方开源组件比丰富. 如果你是一个追求极简风格的完美主义者,那么Flask适合你. 资料
- codeforces 868C - Qualification Rounds(构造)
原题链接:http://codeforces.com/problemset/problem/868/C 题意:有k个队伍参加比赛,比赛有n个预选的题目,有些队伍对已经事先知道了一些题目.问能不能选出若 ...
- 常用的JAVA第三方工具类
转自:https://www.jianshu.com/u/9c5cb1ee4c46 一. org.apache.commons.io.IOUtils 注解 说明 closeQuietly 关闭一个IO ...