java集合(1)
来源:互联网 发布:java web项目搭建教程 编辑:程序博客网 时间:2024/06/05 04:24
Java集合类是一种特别有用的工具类,可用于存储数量不等的对象,并实现常用的数据结构,如栈,队列等。Java集合大致可分为set,List,queue,和map,其中Set代表无序,不可重复的集合,List代表有序,可重复的集合。集合类和数组是不一样的,数组中的元素可以是基本类型,也可以是对象(实际上保存的是对象的引用变量);而集合里只能保存对象(实际上保存的是对象的引用变量,但是通常习惯上认为集合里保存的是对象)。Collection和Map是Java集合框架的根接口。
Collection集合体系的继承树:
Map集合体系的继承树:
Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。Collection接口的操作如下操作集合元素的方法。
boolean add(Object e) : 该方法用于向集合中添加一个元素,如果添加元素成功返回true。
boolean addAll(Collection c) :把集合c中的所有元素都添加到此 指定的集合中。
voidclear() :删除集合里的所有元素,将集合长度变为0。
boolean contains(Object o) :判断集合是否包含指定的元素o,如果包含返回true。
boolean containsAll(Collection c) :判断集合是否包含指定的集合c中所有的元素,如果包含返回true。
int hashCode() :返回此collection 的哈希码值。
boolean isEmpty() :如果此collection 不包含元素,则返回 true。
boolean remove(Object o) :删除集合中指定的元素o, 当集合中包含了一个或多个元素o时该方法只删除第一个符合条件的元素,该方法将返回true。
booleanremoveAll(Collection<?> c) :从集合中删除集合c中包含的所有元素(相当于用调用该方法的集合减去集合c)如果删除一个或一个以上的元素,返回true,。
boolean retainAll(Collection<?> c) :仅保留此 collection 中那些也包含在指定 collection 的元素,如果该操作改变了调用该方法的集合,则返回true
intsize() :返回此 collection 中的元素数。
Object[] toArray() :该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素。
用Collection集合的一些方法操作集合里的元素。
使用Lambda表达式遍历集合
Java8为Iterable接口新增了一个forEach(Consumer action) 默认方法,该方法所需的类型是一个函数式接口,而Iteratle接口是Collection接口的父接口,因此Collection集合也直接调用该方法。
当程序调用Iterable的forEach(Consumeraction)遍历集合元素时,程序会依次将集合元素传给Consumer的accept(T t)方法(该接口唯一的抽象方法)。正因为Consumer是函数式接口,因此可以使用Lambda表达式来遍历集合元素。
使用Lambda表达式来遍历集合元素。
public class CollectionEach {
public static void main(String[] args) {
Collection books=newHashSet();
books.add("java ee");
books.add("java讲义");
books.add("javaweb讲义");
books.forEach(obj->System.out.println("迭代集合元素:"+obj));
}
}
使用Iterator遍历集合元素
Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
Iterator接口里定义了如下4个方法:
-boolean hasNext():如果被迭代的集合还元素没有被遍历,则返回true。
-Object next():返回集合里下一个元素。
-void remove() :删除集合里上一次next方法返回的元素
-void forEachRemaining(Consumer action),这是Java 8为Iterator新增的默认方法,该方法可使用Iterator接口来遍历集合元素。
public class CollectionEach {
publicstatic void main(String[] args) {
Collectionbooks=new HashSet();
books.add("javaee");
books.add("java讲义");
books.add("javaweb讲义");
Iteratorit=books.iterator();
while(it.hasNext()){
Stringbook=(String)it.next();
System.out.println(book);
if(book.equals("javaee")){
//从集合中删除上一次next()方法返回的元素
it.remove();
}
//对book变量赋值,不会改变集合元素本身
book="测试数据";
}
System.out.println("----------------");
System.out.println(books);
}
}
Iterabor仅用于遍历集合,Iterator本身并不提供盛装对象的能力,没有集合的Iterator仿佛无本之木,没有存在的价值。
当使用Iterabor循环迭代访问集合元素时,该集合的元素不能被改变只有通过Iterabor的remove()方法删除上一次next()方法返回的集合元素才可以,否则将引发ConcurrentModificationException异常下面为程序示范了这一点。
public class CollectionEach {
publicstatic void main(String[] args) {
Collectionbooks=new HashSet();
books.add("javaee");
books.add("java讲义");
books.add("javaweb讲义");
Iteratorit=books.iterator();
it.forEachRemaining(obj->System.out.println("books:"+obj));
for(Objectobj:books){
Stringbook=(String)obj;
System.out.println(book);
if(book.equals("javaee")){
//使用Iterator迭代过程中,不可修改集合元素,下面代码引发异常
books.remove(book);
}
}
}
}
- java集合(1)
- Java集合(1)
- java集合框架(1、集合介绍)
- java集合笔记(1):java集合类图
- 试水Java集合(1)
- java基础--集合(1)
- java集合类(1)
- java集合架构(1)
- Java 集合框架(1)
- Java集合框架(1)
- 【Java集合】Java集合一览(汇总)
- Java集合(一)---Java集合框架
- java(八)集合(1)
- Java集合内容 复习(1)
- java学习--集合框架(1)
- "黑马程序员"java集合框架(1)
- java集合框架总结(1)
- 三,Java集合类(1)
- 【Linux基础】常用基本命令(下)
- 用ide实现简单的登录,增删改查
- 十六、迭代器模式——设计模式学习笔记
- 最短路径—Dijkstra算法和Floyd算法
- 朴素贝叶斯分类
- java集合(1)
- 机器学习笔记-第一章 单变量线性回归
- 算法题练习系列之(十):A除以B
- PAT乙级 1048. 数字加密(20)
- QT中窗体之间传值--signals&slots
- Mac 安装java 环境变量 和android环境遇到的问题 JRE System Library(unbound)系统JRE未绑定解决方案
- 理解Handler消息机制
- MyEclipse关闭某类或某个具体文件的验证的方法
- Okhttp之RouteSelector简单解析