没有合适的资源?快使用搜索试试~ 我知道了~
jdk 的集合框架的主体结构: Set 成员不能重复 HashSet 外部无序地遍历成员。 成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。
资源推荐
资源详情
资源评论
jdk 的集合框架的主体结构:
接口 简述 实现 操作特性 成员要求
Set 成员不能重复 HashSet 外部无序地遍历成员。 成员可为任意 Object 子类的对象,但如
果覆盖了 equals 方法,同时注意修改 hashCode 方法。
TreeSet 外部有序地遍历成员;附加实现了 SortedSet, 支持子集等要求顺序的操作 成员要求
实现 caparable 接口,或者使用 Comparator 构造 TreeSet。成员一般为同一类型。
LinkedHashSet 外部按成员的插入顺序遍历成员 成员与 HashSet 成员类似
List 提供基于索引的对成员的随机访问 ArrayList 提供快速的基于索引的成员访问,对尾部
成员的增加和删除支持较好 成员可为任意 Object 子类的对象
LinkedList 对列表中任何位置的成员的增加和删除支持较好,但对基于索引的成员访问支
持性能较差 成员可为任意 Object 子类的对象
Map 保存键值对成员,基于键找值操作,compareTo 或 compare 方法对键排序 HashMap 能
满足用户对 Map 的通用需求 键成员可为任意 Object 子类的对象,但如果覆盖了 equals 方法,
同时注意修改 hashCode 方法。
TreeMap 支持对键有序地遍历,使用时建议先用 HashMap 增加和删除成员,最后从
HashMap 生成 TreeMap;附加实现了 SortedMap 接口,支持子 Map 等要求顺序的操作 键成
员要求实现 caparable 接口,或者使用 Comparator 构造 TreeMap。键成员一般为同一类型。
LinkedHashMap 保留键的插入顺序,用 equals 方法检查键和值的相等性 成员可为任意
Object 子类的对象,但如果覆盖了 equals 方法,同时注意修改 hashCode 方法。
IdentityHashMap 使用== 来检查键和值的相等性。 成员使用的是严格相等
WeakHashMap 其行为依赖于垃圾回收线程,没有绝对理由则少用
Java Collections Framework 成员主要包括两种类型,即:Collection 和 Map 类型。 在 Java
中 提 供 了 Collection 和 Map 接 口 。 其 中 List 和 Set 继 承 了 Collection 接 口 ; 同 时 用
Vector、ArrayList、 LinkedList 三个类实现 List 接口,HashSet、TreeSet 实现 Set 接口。直
接有 HashTable、HashMap、 TreeMap 实现 Map 接口。Collection----一组独立的元素,通常
这些元素都服从某种规则。 List 必须保持元素特定的顺序,而 Set 不能有重复元素。
Map----一组成对的“键值对”对象,即其元素是成对的对象,最典型的应用就是数据字典,
并且还有其它广泛的应用。另外,Map 可以返回其所有键组成的 Set 和其所有值组成的
Collection,或其键值对组成的 Set,并且还可以像数组一样扩展多维 Map,只要让 Map 中
键值对的每个“值”是一个 Map 即可 。Set(interface): 存入 Set 的每个元素必须是唯一的,因
为 Set 不保存重复元素。加入 Set 的 Object 必须定义 equals()方法以确保对象的唯一性。Set
与 Collection 有完全一样的接口。Set 接口不保证维护元素的次序。
首先还要说一下迭代器:迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列
中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,
因为创建它的代价小。
(1) 使用方法 iterator()要求容器返回一个 Iterator。第一次调用 Iterator 的 next()方法时,它返
回序列的第一个元素。
(2) 使用 next()获得序列中的下一个元素。
(3) 使用 hasNext()检查序列中是否还有元素。
(4) 使用 remove()将迭代器新返回的元素删除。
Iterator 是 Java 迭代器最简单的实现,为 List 设计的 ListIterator 具有更多的功能,它可以从
两个方向遍历 List,也可以从 List 中插入和删除元素。
壹--Vector
Vector 基于 Array 的 List,性能也就不可能超越 Array,并且 Vector 是“sychronized”的,这个
也是 Vector 和 ArrayList 的唯一的区别。Vector 类可以实现可增长的对象数组。与数组一样,
它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,
以适应创建 Vector 后进行添加或移除项的操作 。
用法如下:
package com.zzn.test;
import java.util.Vector;
public class Iterator {
@SuppressWarnings( " unchecked " )
public static void main(String[] args) {
// Vector 的创建
// 使用 Vector 的构造方法进行创建
Vector v = new Vector( 4 );
// 向 Vector 中添加元素
// 使用 add 方法直接添加元素
v.add( " Test0 " );
v.add( " Test1 " );
v.add( " Test2 " );
v.add( " Test3 " );
v.add( " Test4 " );
// 从 Vector 中删除元素
v.remove( " Test0 " ); // 删除指定内容的元素
v.remove( 0 ); // 按照索引号删除元素
// 获得 Vector 中已有元素的个数
int size = v.size();
System.out.println( " size: " + size);
// 遍历 Vector 中的元素
for ( int i = 0 ;i < v.size();i ++ ){
System.out.println(v.get(i));
}
}
}
贰--ArrayList
ArrayList 同 Vector 一样是一个基于 Array 的,但是不同的是 ArrayList 不是同步的。所以在
性能上要比 Vector 优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同
步问题。从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度
极快,动态的增加和减少元素。
package com.zzn.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
/**
* 迭代 ArrayList()的 4 种方法;
*/
public class ArrayListTest {
@SuppressWarnings( " unchecked " )
public static void main(String[] args) {
List < String > list = new ArrayList < String > ();
list.add( " aaa " );
list.add( " bbb " );
list.add( " ccc " );
// 方法 1
Iterator it1 = list.iterator();
while (it1.hasNext()){
System.out.println(it1.next());
}
// 方法 2(与方法一大同小异)
for (Iterator it2 = list.iterator();it2.hasNext();){
System.out.println(it2.next());
}
// 方法 3
for (String tmp:list){
System.out.println(tmp);
}
// 方法 4
for ( int i = 0 ;i < list.size(); i ++ ){
System.out.println(list.get(i));
}
}
}
叁--LinkedList:
LinkedList 不同于前面两种 List,它不是基于 Array 的,所以不受 Array 性能的限制。它每
一个节点(Node)都包含两方面的内容:1.节点本身的数据(data); 2.下一个节点的信
息(nextNode)。所以
当对 LinkedList 做添加,删除动作的时候就不用像基于 Array 的 List 一样,必须进行大量的
数据移动。只要更改 nextNode 的相关信息就可以实现了所以它适合于进行频繁进行插入和
删 除 操 作 。 它 具 有 方 法 addFirst() 、 addLast() 、 getFirst() 、
getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得
LinkedList 可以当作堆栈、队列和双向队列使用 。 这就是
LinkedList 的优势。Iterator 只能对容器进行向前遍历,而 ListIterator 则继承了 Iterator 的思
剩余11页未读,继续阅读
资源评论
gongbinglai
- 粉丝: 2
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功