Java 容器

1、出现容器的原因:数组的长度一旦指定,程序执行的过程不能改变,以至于可能会浪费内存空间。 所以就有了容器,容器的大小可以任意改变,容器的大小就是放了多少数据就是多大。      

        Collection                           Map

Set(无序,唯一)      List(有序,可重复的)      HashMap

HashSet        ArrayList  LinkedList

Hash码时无序的,但查找是最快的。

Array内存地址连续(数据查找更快)   Linked内存地址不连续(数据更新更快)

Set set = new HashSet();

set.add();//添加

set.remove();//移除

set.isEmpty();//判断是否为空 也可使用set.size()方法

 

2、List 接口中其实就是多出来一些根据索引进行操作的方法:如在指定位置上添加数据add(int index,E element)、删除数据remove(inr index)、替换元素set(int index,E element)、判断一个元素出现的位置indexOf(Objext o)

在删除int数据类型的时候,若不是利用索引来删除的话,则需 remove(new integer(int x))

3、容器的迭代:

Iterator(容器的迭代器)

所有实现了Collection接口的类都有一个iterator()方法,这个方法会得到一个实现了iterator接口的类的对象:

 for(Iterator i = list.iterator();i.hasNext();){

Object o = i.next();

 }

List虽然有索引,但是也必须用迭代器来迭代,因为这是唯一线程安全的方法。

4、Collections

 提供了一系列的方法来对list进行操作

 

自己写的类,和他相关的一切规则需要我们自己来定义,比较对象是否相等,判断对象的大小。

 

增强for循环:不能方便的用于索引,只能用于简单的遍历。增强的for循环迭代的是容器的话,内部默认也是使用iterator

for(int n : num){}

n为接收的变量    num为需要循环的内容

 

5、泛型:

指定当前的容器中只能放置哪种类型,并且泛型中是没有父类引用指向子类对象的概念的。

List<Person> list = new ArrayList<Person>();

 

6、Map出现的原因:

Hashset没有索引,不方便通过索引来对容器进行操作

Map其实就是在set的基础上加了索引,并且这个索引可以自己定义

Map是以key-value(键-值对)保存的,只可以重复,但索引不能重复

Map中保存的是一个一个的EntryEntry代表一对key-value,它是Map的属性(成员变量)

Set<Map.Entry<String,String>>entrys = map.entryset();

例:

Map<String,String>  map = new HashMap<String,String>();

map.set(1,one);

map.set(2,two);

map.set(3,three);

map.set(4,four);

Set<Map.Entry<String,String>>entrys = map.entryset();

for(Iterator<Map.Entry<String,String>>  i = entrys.iterator();i.hasNext();){

Map.Entry<String,String> entry = i.next();

System.out.println(entry.getvalue());

}

 

posted @ 2013-03-01 22:10  bod08gongyu  阅读(160)  评论(0)    收藏  举报