20:集合类

集合类


Java语言的java.unil包中提供了一些集合类,这些集合类文被称为客器,提到容器不难会想到数组,集合类与数相的不同之处是,数组的长度是固定约,集合约长度是可变的∶ 数组用来存放基本类型的数据,集合用案存散对象的引用。常用的集合有List集合、Set集合、Map集合,其中Li与Set客理了Collection 接口。如下图表示:

20:集合类

注意:Collection 接口是层次构构中的根接口,构成Collection 的单位,枝称之为元素,Collection 接口通常不使直核使用,但该接口提供了添加和删除元素、管理数指的方法。由于List 接口与 Set 按口都实现了 Collection 接口,因此这些方法对 List 集合与Set 集合是通用的。

一、接口

1、List接口

 List是列表类型,以线性方式存储对象,自身的方法都与索引有关,个别常用方法如下。

方法 返回值 功能描述
add(int index, Object obj) void 用来向集合中的指定索引位置添加对象,集合的索引位置从0开始,其他对象的索引位置相对向后移一位
set(int index, E element) Object 用指定元素替换列表中指定位置的元素,返回以前在指定位置的元素
indexOf(Object obj) int 返回列表中对象第一次出现的索引位置,如果集合中不包含该元素则返回-1
lastIndexOf(Object obj) int 返回列表中对象最后一次出现的索引位置,如果集合汇总不包含该元素则返回-1
listIterator() ListIterator 用来获得一个包含所有对象的ListIterator迭代器

例:创建集合对象,并向集合中添加元素,修改元素,通过迭代器遍历集合元素。

public class Demo01List {

    public static void main(String[] args) {
        String a = "A", b = "B", c = "C", d = "D";    //定义要插入集合的字符串对象

        List<String> list = new LinkedList<>();       // 创建list集合对象
        list.add(a);                                  //向集合中添加元素
        list.add(b);
        list.add(c);
        Iterator<String> iter = list.listIterator();  //创建list集合的迭代器
        while (iter.hasNext()){                       //遍历集合中的元素
            System.out.print(iter.next() + " ");
        }

        list.add(1,d);                          //将对象d添加到索引位置为1的位置
        list.set(2,a);                                //将索引位置为2的对象改为a
        Iterator<String> it = list.listIterator();    //创建list集合的迭代器
        System.out.println();
        while (it.hasNext()){                       //遍历集合中的元素
            System.out.print(it.next() + " ");
        }
    }

运行结果:

A B C 
A D A C 

注意:List 集合中可以包含重复的对象,若要获取重复对象第一次出现的索引位置可以使用 indexOf()方法。想要任取重复对貌最后一次出现的索引挖置,可以使用 lastIndexOf()方法。使用 indexOf()lastIndexOf()方法时,如果指定约对象在List集合中只有一个。则通过这再个力法获得的索明位置是相同的。

2、Set接口

Set接口常用方法如下:

方法 返回值 功能描述
add(Object obj) boolean 若集合中尚存在未指定的元素,则添加此元素
addAll(Collection col) boolean 将参数集合中所有元素添加到集合的尾部
remove(Object obj) boolean 将指定的参数对象移除
clear() void 移除此Set中的所有元素
iterator() Iterator 返回此Set中的元素上进行迭代的迭代器
size() int 返回此Set集合中的所有元素数
isEmpty() boolean 如果Set不包含元素,则返回true

注意:Set靠合中不允许存在重复值,因此可以使用 Set 集合中的addAll()方法,将集合添加到Set集合中并除掉重复值。

例:

public class Demo02Set {

    public static void main(String[] args) {

        String a = "A", b = "B", c = "C", d = "D";    //定义要插入集合的字符串对象
        List<String> list = new ArrayList<>();       //创建一个list集合对象
        list.add(a);                               //向集合中添加元素
        list.add(b);
        list.add(c);
        list.add(a);    //重复值

        Set<String> set = new HashSet<String>();
        set.add(a);                                    //向set集合添加元素
        System.out.println(set);
        set.addAll(list);                              //将list中的所有元素添加到set集合中
        Iterator<String> iterator = set.iterator();    //创建set集合的迭代器
        while (iterator.hasNext()){
            System.out.print(iterator.next() + "");
        }
        System.out.println();
        System.out.println(set.size());                  //输出set集合中的元素个数
        set.remove(a);                                   //移除对象为a的元素
        Iterator<String> iterator1 = set.iterator();    //创建set集合的迭代器
        while (iterator1.hasNext()){
            System.out.print(iterator1.next() + "");
        }
        set.clear();                                   //移除set中的所有元素
        System.out.println();
        System.out.println(set.isEmpty());             //判断set中是否存在元素,不存在为true,否则为false
    }
}

运行结果:

[A]
ABC
3
BC
true

3、Map接口

Map接口提供了将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射一个值。Map接口同样提供了clear()、isEmpty()size()等方法,还有以下常用方法:

方法 返回值 功能描述
put(key k, value v) Object 向集合中添加指定的key与value的映射关系
get(Object key) boolean 如果存在指定的键对象,则返回该对象对应的值,否则返回null
values() Collection 返回该集合中所有值对象形成的Collection集合

例:

public class Demo03Map {

    public static void main(String[] args) {

        Map map = new HashMap();
        map.put("1", "A");
        map.put("2", "B");
        map.put("3", "C");
        for (int i = 1; i < 4; i++) {
            System.out.println("第" + i + "个元素是:" + map.get("" + i + ""));
        }
    }
}

二、接口的实现

1、List接口的实现

使用List 集合,通常情况下需要声明为List类型,然后通过List 接口的实现为来对集合速行实例化。List 接口的实现类常用的有 ArrayListLinkedList

ArrayList类实现了可变的数组`,可以根据索引位置对集合进行快速的随机访问。LinkedList类采用链表结构保存对象,便于向集合中插入和删除对象。语法格式如下:

List<E> list = new ArrayList<>();   //E表示是合法的Java数据类型
List<E> list = new LinkedList<>();

2、Set接口的实现

Set接口的实现类常用的有HashSetTreeSet,语法格式如下:

Set<E> set = new HashSet<>();      //E表示是合法的Java数据类型
Set<E> set = new TreeSet<>();

3、Map接口的实现

Map接口的实现类常用的有HashMapTreeMap,建议使用HashMap(效率相对较高)。

Map map = new HashMap();
Map map = new TreeMap();

三、迭代器

利用 Iterator接口创建达代然,Iterator接口位于java.util 包下。Iterator接口中有3个方法。

  • hasNext() 如果仍有元索可以迭代,则返目true。
  • Next()∶五回迭代的下一个元素。
  • remove()∶ 从选代器指向的collection 中移除选代器返同的最后一个元素(可选操作)。

例:创建一个迭代器

Iterator<String> iterator = set.iterator();    //创建set集合的迭代器
        while (iterator.hasNext()){
            System.out.print(iterator.next() + "");
        }

20:集合类

上一篇:mongoose基础使用


下一篇:类属性和实例化属性