4.
Set
Set
是不包含重复元素的集合。可以更加正式地表达为,在
set
里面的元素
e1,e2,
不允许
e1.equals(e2),
而且最多有一个
null
元素。
Set
的主要方法如下,可以看出
List
和
Set
在方法上的区别了,
List
能够根据类似于
index
,来找到元素的方法,而
set
只管往集合里面放东西,并不管其插入的顺序,
List
有比较严格的插入顺序。
//Set
是否为空
boolean isEmpty();
//
是否包含指定元素
boolean contains(Object o);
//
遍历
Set
Iterator<E> iterator();
//
转化成数组
Object[] toArray();
//
添加元素
boolean add(E e);
//
清空集合
void clear();
//
只保留包含指定集合的元素
boolean retainAll(Collection<?> c);
4.1 HashSet
1
.
HashSet
的数据结构和工作原理
HashSet
的基本数据结构是
HashMap
,
HashMap
的基本数据结构是哈希表和链表,在构造函数上可以参见
HashMap
的工作原理,和
HashMap
一样,影响性能的因素包括:
set
的初始化容量大小,容量因子,和
HashCode
的构造,其主要方法实现如下:
/**
*
添加元素,注意是将
elment
作为
key
存进
HashupMap
,
*
同时指定所有对应的
element
的
value
都为同一个对象,
*
这样可以防止元素重复,同时可以看出
Hashset
允许
*
空元素
*/
public boolean add(E e) {
return
map.put(e, PRESENT)==null;
}
/**
*
移除元素
*/
public boolean remove(Object o) {
return
map.remove(o)==PRESENT;
}
/**
*
清空
set
*/
public void clear() {
map.clear();
}
/**
*Clone Set
*/
public Object clone() {
try {
HashSet<E>
newSet = (HashSet<E>) super.clone();
newSet.map
= (HashMap<E, Object>) map.clone();
return
newSet;
} catch
(CloneNotSupportedException e) {
throw
new InternalError();
}
}
public boolean contains(Object o) {
return
map.containsKey(o);
}
public boolean isEmpty() {
return
map.isEmpty();
}
public int size() {
return
map.size();
}
public Iterator<E> iterator() {
return
map.keySet().iterator();
}
分享到:
相关推荐
Java类集框架 最大单值操作父接口Collection及其子接口、子类: List接口、ArrayList类、Vector类、栈操作类Stack、链表操作类LinkList、队列操作...Collections工具类 Comparable接口、equals()方法、hashCode()方法
集合框架:熟悉Java集合框架中的List、Set、Map等接口及其实现类,如ArrayList、HashSet、HashMap等。 泛型:理解泛型的概念及其在Java中的应用,如泛型类和泛型方法。 并发编程:了解Java中的线程、同步、锁等机制...
7.8 操作集合的工具类:Collections 283 7.8.1 排序操作 283 7.8.2 查找,替换操作 287 7.8.3 同步控制 288 7.8.4 设置不可变集合 288 7.9 烦琐的接口:Enumeration 289 7.10 本章小结 290 本章练习 290 第8...
12.5.2 使用集合工具类同步化集合类对象324 12.5.3 使用JDK5.0后提供的并发集合类324 12.6 用Timer类调度任务325 12.7 本章练习326 第13章 13.1 java.io.File类328 13.1.1 文件和目录是什么?328 13.1.2 Java对文件...
集合类4.1 集合的实现类4.1.1 ArrayList 4.1.2 LinkedList 4.1.3 Vecotor4.1.4 HashSet 4.1.5 LinkedHashSet 4.2 Conllections工具类5. 集合的遍历5.1 迭代器5.2 增强for循环(jdk1.5+)* 附加知识点1.数据结构1.1 栈...
1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入持久化类的对象 13.2 List(列表) 13.3 Map(映射) 13.4 小结 13.5 思考题 第14...
1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
232 11.7 习题 232 第12章 内部类(精彩视频:71分钟) 234 12.1 非静态内部类 234 12.1.1 创建非静态内部类 234 12.1.2 在外部类中访问内部类 235 12.1.3 在外部类外访问内部类 236 12.1.4 在内部类中访问外部类 ...
本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。 真正做到零基础入门学习,适合初学者的教程!...7.Collections工具类 教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!
第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入持久化类的对象 13.2 List(列表) 13.3 Map(映射) 13.4 小结 13.5 思考题 第14...
接口:Connection、Map、List、Set、Comparable(集合比较)、Serializable(序列化)。 包:java.util、java.lang、java.io、java.sql、javax.net、 java.awt、javax.xml 、javax.sevlet。 1.面向对象的特征有哪些? 1...
第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入持久化类的对象 13.2 List(列表) 13.3 Map(映射) 13.4 小结 13.5 思考题 第14...
第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入持久化类的对象 13.2 List(列表) 13.3 Map(映射) 13.4 小结 13.5 思考题 第14...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 319 实例190 验证码 ...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 ...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 319 实例190 验证码 322 11.3 ...
第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 319 ...