java 学习笔记---集合Set
来源:互联网 发布:vb中inputbox什么意思 编辑:程序博客网 时间:2024/06/05 06:23
集合:就像一个容器,可以把多个对象放进该容器中。
java集合分为:Set List Map三种体系。
Set : 无序的,不可重复的。
List :有序的,可重复的。
Map:代表有映关系的集合,Map保存的每一项数据都是key-value对。
java 5 后添加了Queue体系,代表一种队列集合实现。
集合和数组对比:
1.数组一旦初始化,长度不可变;
2:数组无法保存具有映射关系的数据。
3:数组的元素可以是基本类型的值,也可以是对象,而集合智能是保存对象。
java集合由两个接口派生而出:Collection 和 Map,这两个是java 集合框架的根接口。
关系如图所示:
1.Collenction 接口是List、Set、 Queue 接口的父接口,定义的方法:
1.1 boolean add(Object o)
想集合里添加一个元素,如果集合对象被添加操作改变则返回true;
1.2 boolean addAll(Collection c)
将指定 collection 中的所有元素添加到此 collection 中,如果集合对象被添加返回true;
1.3 void clear()
移除次 collection 中的所有元素,将集合长度变为0
1.4 boolean contains(Object o)
如果此 collection 包含指定的元素,则返回true
1.5 boolean containsAll(Collection<?> c)
如果此 collection 包含指定 collection 中的所有元素,则返回 true
1.6 boolean equals(Object o)
比较此 collection 与指定对象是否相等。
1.7 int hashCode()
返回此 collection 的哈希吗值
1.8 boolean isEmpty()
如果此 collection 不包含元素,则返回 true;
1.9 Iterator<E> iterator()
返回一个 Iterator 对象,用于遍历集合里的元素。
1.10 boolean remove(Object o)
从此 collection 中移除指定元素的单个实例,如果存在的话返回true
1.11 boolean remveAll(Collection c)
移除此 collection 中那些包含在指定 collection 中的所有元素,如果存在的话返回true
1.12 boolean retainAll(Collection c)
仅保留此 collection 中那些包含在指定 collection 的元素,如果存在的话返回true;求并集
1.13 int size()
1.14 Object[] toArray()
案例:
import java.util.ArrayList;import java.util.Collection;
import java.util.HashSet;
public class CollectionTest {
public static void main(String[] args) {
Collection c = new HashSet();
//添加元素:字符串
c.add("孙悟空");
//添加元素:整型
//该处将6作为一个整型对象来处理
c.add(6);
//输出集合元素的个数
System.out.println("c集合个数为:" + c.size());
//移除指定元素
c.remove(6);
System.out.println("c集合个数为:" + c.size());
//判断集合中是否存在某个元素
System.out.println("判断集合中是否存在某个元素:" + c.contains(6));
c.add("java EE");
System.out.println("c的集合元素:"+ c);
Collection books = new HashSet();
books.add("李莫愁");
books.add("java 讲义");
// c结合是否完全包含books集合
System.out.println("c集合是否完全包含books集合" + c.containsAll(books));
// 用c 减去books集合里的元素
c.removeAll(books);
System.out.println("c的集合元素:" + c);
//删除c集合里所有的元素
c.clear();
System.out.println("c集合里面的元素:" + c);
books.removeAll(c);
System.out.println("books的集合元素: "+ books);
}
}
运行结果:
c集合个数为:2
c集合个数为:1
判断集合中是否存在某个元素:false
c的集合元素:[java EE, 孙悟空]
c集合是否完全包含books集合false
c的集合元素:[java EE, 孙悟空]
c集合里面的元素:[]
books的集合元素: [java 讲义, 李莫愁]
Iterator 遍历就不说了。
Set 集合
无序的,不可重复的,与Collection 基本一样。
判断相同的是否,是通过两个方法来实现的
一定要重写 equals和hashCde 方法
EnumSet 类
EnumSet是一个枚举类设计的集合类,EnumSet中的每个元素都必须是指定枚举类型的枚举值。
EnumSet的集合元素也是有序的,以枚举值在枚举类的定义顺序来决定集合元素的顺序。
EnumSet不允许加入null元素,否则会报错。EnumSet内部以单位向量存储,占用内存小,运行高效,尤其批量操作。
EnumSet提供了如下常用static方法创建对象:
1).allOf(Class<E> elementType)
创建一个指定枚举类里所有包含枚举值的EnumSet集合
2).complementOf(EnumSet<E> s)
创建一个其元素类型与指定枚举 set 相同的枚举 set,最初包含指定 set 中所不包含的此类型的所有元素。
3).copyOf(Collection<E> c)
使用一个普通集合来创建EnumSet集合
4).copyOf(EnumSet<E> s)
创建一个与指定EnumSet具有相同元素类型、相同集合元素的EnumSet集合
5).noneOf(Class<E> elementType)
创建一个具有指定元素类型的空枚举 set。
6).of(E e1, E e2, E e3, E e4, E e5......)
创建一个最初包含指定元素的枚举 set。
7).range(E from, E to)
创建一个包含从frome枚举值到to枚举值方位内的所有枚举值的EunmSet集合
各Set实现类性能分析
HashSet 和 TreeSet ,HashSet的整体性能总比TreeSet好,特别是添加和查询操作,只有当一个保持排序的Set时
才使用TreeSet。
LinkedHashSet 和 HashSet ,HashSet的插入和删除略快,但是LinkedHashSet的遍历会比HashSet更快。
EnumSet 是所有set中性能最好的,但它只鞥呢保存同一个枚举类的值作为集合。
set的三个实现类HashSet、TreeSet、EnumSet都是线程不安全的。多个线程访问或操作Set,必须手动保证该Set的同步性.
- Java学习笔记----------集合Set
- java 学习笔记---集合Set
- java学习笔记集合框架Set集合
- java学习笔记<十四>set集合
- JAVA学习笔记(二十一)- 集合 Set
- Java学习笔记---集合(一)Set
- Java学习笔记(36)-----------Set集合
- JAVA学习笔记——Set集合
- [学习笔记]Java集合框架之Set集合
- [学习笔记]Java集合框架之Set集合
- (36)Java学习笔记——集合框架 / Set集合
- Java学习笔记(十一)--Set集合 Map集合
- Python学习笔记--集合set
- 疯狂Java学习笔记(36)-----------Set集合
- java集合 - Collection - List - Set - Map - Iterator 学习笔记
- JAVA学习--集合Set使用
- Java基础学习笔记16——(Set集合,Collection集合总结)
- 学习笔记——集合(Set)
- CString转const char *
- qq邮箱订阅介绍
- 用python简单实现类似thinkphp的针对Mysql操作的数据模型
- 2014下半年---下
- eclipse code templates 设置(eclipse注释模版配置)
- java 学习笔记---集合Set
- 所以专门挑了些题干短的
- Android 开发环境搭建
- Python 中文转拼音
- 关于安装j2ee过程中出现不能找到运行环境的解决
- linux 查看二进制文件命令
- typedef使用
- Lua中实现类的原理
- thinkpad远程桌面全屏与退出