黑马程序员_集合学习1

在集合框架中,最顶层的是Collection,它有两个子接口,List和Set

在List和Set接口下,又有很多特殊的容器。因为每一个容器对数据的存储方式都有不同。这个存储方式称之为:数据结构。自身具备的特点不同。

作为一个集合,应该具有的方法:增删改查

在collection中,存在这样一些抽象方法

add(),增加一个元素

addAll(),一次增加一堆元素(实现并集)

remove 删除一个元素

removeAll 删除一堆元素(实现差集)A-B

retainAll 保留两个集合中共有的元素。交集

在集合中存储的都是对象的引用(地址)。

 

当我们取出元素中的集合时候,就可以使用迭代器,其实就是集合取出元素的方式

每个集合中有各自特定的取出方式,也就有一个特定的迭代器。取出这个类就定义在集合的内部。也就是用来取元素,在集合内部操作,这个迭代器内部类抽取了一些共性的方法,叫做Iterator接口,这个接口定义了抽象的方法,在各自不同的数据结构中,取出和判断的方式不同,故各个数据结构实现了自己特定的迭代器对象。可以使用  数据结构对象.iterator();得到其内部实现的迭代器。

Collection中

List:元素是有序的,元素可以重复。因为该集合体系有索引。可以在指定位置对元素进行操作。凡是带角标的,都是该集合下特有的操作方式。

Set:元素是无序的,元素不可以重复。

ArrayList<String>al  = newArrayList<String>();

      

       al.add("01");

       al.add(0,"dsf2");

      

      

       ArrayList<String> al1 = newArrayList<String>();

       al1.add("fds0");

       al1.add("dfs1");

       al.addAll(0,al1);

      

       al.remove(0);

      

       al.set(0,"nihao");

      

       al.get(0);

        System.out.println(al.subList(0,2));

       System.out.println(al);

需求:现在要使用迭代器去集合中的元素取出,并进行一些操作。

但是,我们在使用迭代器操作集合对象的时候,再使用集合对象对元素进行操作

会出现并发操作的安全隐患。不能对同一个集合,进行多种同时操作,不能既使用集合,又使用迭代器操作同一组元素。

列表迭代器:

Remove从列表中移除由 nextprevious 返回的最后一个元素(可选操作)。

也就是删除next得到的那个元素,不能同时使用两次remove。

List集合特有的迭代器,ListIteratorIterator子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生并发修改异常。

所以在迭代时候,只能用迭代器的方法操作元素,可以iterator方法有限。

只能对元素进行判断,取出,删除的操作。

如果想要其他的操作,如添加,修改,就需要使用子接口。

该接口通过List.ListIterator()方法获取。

特点:在遍历过程中的增删改查。。。。十分的重要

ArrayList的特点:查询,修改速度很快,但是增加,删除元素很慢。线程不同步

LinkedList:增删的速度很快,查询比较慢

Vector :底层是数组数据结构,线程同步。


原文地址:https://www.cnblogs.com/xinyuyuanm/p/3003872.html