没有合适的资源?快使用搜索试试~ 我知道了~
java集合类学习与实例
3星 · 超过75%的资源 需积分: 12 15 下载量 132 浏览量
2010-11-21
15:39:29
上传
评论
收藏 70KB DOC 举报
温馨提示
试读
18页
Collections Framework集合框架是一个统一的架构,用来表示和操作集合.集合框架主要是由接口,抽象类和实现类构成.接口:蓝色;实现类:红色Collection|_____Set(HashSet)| |_____SortedSet(TreeSet)|_____List(LinkedList,ArrayList) Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。Set:不能包含重复的元素,子接口SortedSet是一个按照升序排列的元素的Set。List:可以包含重复的元素,是一个有序的集合,提供了按索引访问的方式,有次序,位置不改变。 >>>>>>>>>
资源推荐
资源详情
资源评论
Collections Framework
集合框架是一个统一的架构,用来表示和操作集合.
集合框架主要是由接口,抽象类和实现类构成.
接口:蓝色;实现类:红色
Collection
|_____Set(HashSet)
| |_____SortedSet(TreeSet)
|_____List(LinkedList,ArrayList)
Collection:集合层次中的根接口,JDK 没有提供这个接口的实现类。
Set:不能包含重复的元素,子接口 SortedSet 是一个按照升序排列的元素的 Set。
List:可以包含重复的元素,是一个有序的集合,提供了按索引访问的方式,有次序,位置
不改变。
Collection 接口常用的方法:
boolea
n
add(E o)
确保此 collection 包含指定的元素(可选操作)。
boolea
n
contains(Object o)
如果此 collection 包含指定的元素,则返回 true。
boolea
n
remove(Object o)
从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
int size()
返回此 collection 中的元素数。
Object[
]
toArray()
返回包含此 collection 中所有元素的数组。
Iterator<E
>
iterator()
返回在此 collection 的元素上进行迭代的迭代器。
List 接口特有方法:
E get(int index)
返回列表中指定位置的元素。
SortedSet 接口特有方法:
E rst()
返回此有序集合中当前第一个(最小的)元素。
E last()
返回此有序集合中最后一个(最大的)元素。
集合框架中的实现类.
ArrayList:
本质:我们可以将其看作是能够自动增长容量的数组,实际是采用对象数组实现的。
自动增长容量就是当数组不够的时候,再定义更大的数组,然后将数组元素拷贝到新的数组.
例子:import java.util.*;
class ArrayListTest
{
public static void main(String[] args)
{
ArrayList a1=new ArrayList();
a1.add("winsun");
a1.add("weixin");
a1.add("mybole");
for(int i=0;i<a1.size();i++)
{
System.out.println(a1.get(i));
}
System.out.println(a1);
}
}
结果:
winsun
weixin
mybole
[winsun, weixin, mybole]
利用 ArrayList 的 toArray()返回一个对象的数组也可以利用 Arrays.asList()方法返回一个列
表
返回固定尺寸的列表,当返回以后就不能修改列表的大小了,可以修改列表中元素的值,但
不能增加容量,可以用 set()方法对值进行修改:
Object set(int index,Object element)
用 element 替换指定的 index 的对象
Arrays.asList()和 Collection.toArray()是作为数组和集合类的一个桥
如果想从集合类中获得一个数组可以使用 toArray()方法;如果想从数组中获得一个列表可
以使用 asList()方法 :
import java.util.*;
class Point {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
public String toString() {
return "x=" + x + ",y=" + y;
}
}
public class ArrayListToArrayTest {
public static void main(String[] args) {
ArrayList a1 = new ArrayList();
a1.add(new Point(3, 3));
a1.add(new Point(4, 4));
a1.add(new Point(5, 5));
for (int i = 0; i < a1.size(); i++) {
System.out.println(a1.get(i));
}
System.out.println(a1);
Object[] objs = a1.toArray(); // 利用 ArrayList 的 toArray()返回一个对象的数组.
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]);
}
System.out.println(objs);//
List l = Arrays.asList(objs);// Arrays.asList()返回一个列表.
System.out.println(l);
}
}
结果:
x=3,y=3
x=4,y=4
x=5,y=5
[x=3,y=3, x=4,y=4, x=5,y=5]
x=3,y=3
x=4,y=4
x=5,y=5
[Ljava.lang.Object;@1fc4bec
[x=3,y=3, x=4,y=4, x=5,y=5]
LinkedList 类
LinkedList 是采用双向循环链表实现的.
利用 LinkedList 实现栈(stack),队列(queue),双向队列(double-ended queue)
LinkedList 常用方法
void addFirst(Object o)
void addLast(Object o)
Object getFirst()
Object getLast()
Object remove(int index)
boolean remove(Object o)
Object removeFirst()
Object removeLast()
判断是否为空
LinkedList 继承了一个方法 isEmpty()
如果没有包含任何元素返回 true,没有包含任何元素返回 false
ArrayList 底层采用数组完成,而 LinkedList 则是以一般的
双向链表完成,其内每个对象除了数据本身外,还有两个引用,
分别指向前一个元素和后一个元素.
如果我们经常在 List 的开始处增加元素,或者在 List 中进行插入
和删除操作,我们应该使用 LinkedList,否则的话,使用 ArrayList
将更加快速.
因为插入和删除都要移动数组中的元素.
只是访问就用 ArrayList,提供了按索引访问的机制.
HashSet
HashSet 实现了 Set 接口的 hash table(哈希表),依靠 HashMap 来实现.
应该为要存放到散列表的各个对象定义 hashCode()和 equals().
因为实现了 set 接口所以不能有重复的元素.
散列表:
散列表又称为哈希表.
散列表算法的基本思想:
以结点的关键字为自变量,通过一定的函数关系(散列函数)
计算出对应的函数值,以这个值作为该结点存储在散列表中的地址.
当散列表中的元素存放太满,就必须进行再散列,将产生一个新的散列表,
所有元素存放到新的散列表中,原先的散列表将被删除.
在 java 语言中,通过负载因子(load factor)来决定何时对散列表进行再
散列.例如:如果负载因子是 0.75,当散列表中已经有 75%的位置已经放满,
那么将进行散列.
负载因子越高(越接近 1.0),内存的使用率越高,元素的寻找时间越长.
负载因子越低(越接近 0.0),元素的寻找时间越短,内存浪费越多.
HashSet 类的缺省负载因子是 0.75.
剩余17页未读,继续阅读
资源评论
- xiaoshuben99992014-01-06谢谢分享,参考不错。
unithree
- 粉丝: 2
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功