集合框架的基本操作
集合中储存的是对象的地址
当建立一个容器并向其中存入对象的过程中,栈内存中有对象和新建容器的名称,它指向堆内存中开辟的内存空间,把对象存储入容器时,栈内存中对象的地址指向了堆内存中开辟的容器内存地址。
使用集合框架的共性方法:ArrayList
1.新建一个容器:
ArrayList bowl=new ArrayList();
2.容器的方法:
添加:add(obj)
删除:remove(obj)
清空:clear()
判断有无指定元素:contains(obj)
判断容器是否为空:isEmpty()
获取容器的长度:size()
取两容器的交集:retainAll(obj) 取对象与指定对象的相同元素。
去掉两容器的交集:removeAll(obj)删去对象与指定对象的相同元素。
迭代器
用于取出集合中的元素
迭代器的使用方法
建立Iterator接口对象,调用集合中的iterator()方法建立迭代器
ArrayList bowl=new ArrayList();
bowl.add("team1");
bowl.add("team2");
bowl.add("team3");
Iterator x=bowl.iterator();
迭代器的基本方法:
判断是否有元素: hasNext()
取出下一个元素:next()
各种类中有不同的数据结构,迭代器就是各种不同数据结构的类向上抽取出的规则,这是一个内部类,取出元素时,在类中直接取出使用,在使用Iterator接口时,只需要使用这个接口的规则就行了。
List集合的特有方法
通过角标操作容器中的元素的方法都是List特有的方法
增加:
add(x) 在指定角标位置增加一个元素
add(x,collection)在指定角标位置增加一个容器中的所有元素
删除:
remove(x)删除指定角标位置的元素
修改:
set(x,element)把指定位置的元素修改为指定元素
获取:
get(x)获取角标为x的元素
subList(start,end),获取角标从start到end-1的元素
indexOf(e):获取指定元素的角标
判断前面是否有元素
hasPrevious();
List集合的迭代器操作较少,只能实现增加,删除与取出操作。所以我们使用List的子接口ListIterator接口,接口中有多种方法可以使用。
ArrayList bowl=new ArrayList();
bowl.add("team1");
bowl.add("team2");
bowl.add("team3");
ListIterator li=bowl.listIterator();//建立子接口迭代器
在使用迭代器迭代时,不能再使用容器的方法,因为并行操作发生异常。
ListIterator li=bowl.listIterator();//迭代器取出对象判断并进行操作
while(li.hasNext())
{
Object obj=li.next();
if(obj.equals("team2"))
li.set("diudiudiu");
}
sop(bowl);
List集合具体对象的特点
ArrayList | 数组数据结构,查询快,增删麻烦,线程不同步但是效率高 |
---|---|
LinkedList | 链表数据结构,查询慢,增删快 |
Vector | 老版本的数组数据结构,它是线程同步的 |
LinkedList集合
链表数据结构。
LinkedList list=new LinkedList();
LInkedList的特有方法:
jdk1.6版本之后的新方法,在LinkedList为空的时候不会报错,而是返回n