各种数据类型的存储器-集合

2022-09-14 20:07:45 浏览数 (1)

1、集合概述

1.1、什么是集合

集合类存放于java.util包中。

集合类型主要有3种:set(集)、list(列表)和map(映射)。

集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。

简单来讲:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。

1.2、集合分类

java集合的所有程序都是保存在java.util这个包中,在整个的类集框架中,其核心的接口为:List,Set,Map,Iterable,Collection。

2、Collection基础

2.1、什么是Collection

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。

2.2、Collection常用方法

int size() 获取元素个数

boolean isEmpty() 是否个数为 0

boolean contains(Object element) 是否包含指定元素

boolean add(E element)添加元素,成功时返回 true

boolean remove(Object element) 删除元素,成功时返回 true

void clear() 删除所有元素

代码语言:javascript复制
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo01 {
    public static void main(String[] args) {
        // 测试不带All的方法
        // 创建集合对象
        // Collection c = new Collection(); //错误,因为接口不能实例化
        Collection c = new ArrayList();

        // boolean add(Object obj):添加一个元素
        // System.out.println("add:" c.add("hello"));
        c.add("hello");
        c.add("world");
        c.add("java");
        System.out.println("c:"   c);

        // boolean remove(Object o):移除一个元素
        c.remove("hello");
        System.out.println("remove:"   c);
        // System.out.println("remove:"   c.remove("javaee"));

        // boolean contains(Object o):判断集合中是否包含指定的元素
System.out.println("contains:" c.contains("hello"));
System.out.println("contains:" c.contains("android"));

        // boolean isEmpty():判断集合是否为空
        System.out.println("isEmpty:" c.isEmpty());

        //int size():元素的个数
        System.out.println("size:" c.size());
        System.out.println("c:"   c);

        // void clear():移除所有元素
        c.clear();
        System.out.println("c:"   c);
    }
}

3、Collection操作

3.1、Collection操作集合

boolean containsAll(Collection<?> c) 是否包含指定集合 c 的全部元素

boolean addAll(Collection<? extends E> c) 添加集合 c 中所有的元素到本集合中,如果集合有改变就返回 true

boolean removeAll(Collection<?> c) 删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true

boolean retainAll(Collection<?> c) 保留本集合中 c 集合中两者共有的,如果集合有改变就返回 true

代码语言:javascript复制
package cn.com.tyschool.demo005;

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo02 {
    public static void main(String[] args) {
        // 创建集合1
        Collection c1 = new ArrayList();
        c1.add("abc1");
        c1.add("abc2");
        c1.add("abc3");
        c1.add("abc4");
        c1.add("abc8");
        // 创建集合2
        Collection c2 = new ArrayList();
        c2.add("abc1");
        c2.add("abc2");
        c2.add("abc3");
        c2.add("abc4");
        c2.add("abc5");
        c2.add("abc6");
        c2.add("abc7");
        // boolean addAll(Collection c):添加一个集合的元素
        System.out.println("addAll:"   c1.addAll(c2));
        System.out.println("c1:"   c1);

        //boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有)
        //只要有一个元素被移除了,就返回true。
        System.out.println("removeAll:" c1.removeAll(c2));
        System.out.println("c1:"   c1);

        //boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)
        //只有包含所有的元素,才叫包含
        System.out.println("containsAll:" c1.containsAll(c2));
        System.out.println("c1:"   c1);

        //boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
        //假设有两个集合A,B。
        //A对B做交集,最终的结果保存在A中,B不变。
        //返回值表示的是A是否发生过改变。
        System.out.println("retainAll:" c1.retainAll(c2));
        System.out.println("c1:"   c1);

        System.out.println("c2:"   c2);
    }
}

3.2、Collection操作数组

Object[] toArray() 返回一个包含集合中所有元素的数组

<T> T[] toArray(T[] a) 返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型

代码语言:javascript复制
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo03 {
    public static void main(String[] args) {
        // 创建集合对象
        Collection c = new ArrayList();
        // 添加元素
        c.add("hello"); // Object obj = "hello"; 向上转型
        c.add("world");
        c.add("java");
        // 遍历
        // Object[] toArray():把集合转成数组,可以实现集合的遍历
        Object[] objs = c.toArray();

        for (int x = 0; x < objs.length; x  ) {
            // System.out.println(objs[x]);
            // 我知道元素是字符串,我在获取到元素的的同时,还想知道元素的长度。
            // System.out.println(objs[x]   "---"   objs[x].length());
            // 上面的实现不了,原因是Object中没有length()方法
            // 我们要想使用字符串的方法,就必须把元素还原成字符串
            // 向下转型
            String s = (String) objs[x];
            System.out.println(s   "---"   s.length());
        }
    }
}

4、Collection遍历

4.1、forEach方法

使用Iterable接口的forEach方法,Iterable是Collection的父接口

代码语言:javascript复制
public class CollectionDemo04 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<String>() ;
        c.add("java") ;
        c.add("javaweb") ;
        c.add("javascript") ;
        c.forEach(ele -> System.out.println(ele));
    }
}

4.2、利用专门遍历Collection集合的Iterator类

代码语言:javascript复制
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionDemo05 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<String>() ;
        c.add("java") ;
        c.add("javaweb") ;
        c.add("javascript") ;
        //将集合转换为迭代器
        Iterator<String> it = c.iterator();
        //如果迭代器中还有元素,则返回true。
        while(it.hasNext()) {
            //返回迭代器中的下一个元素
            String str = it.next() ;
            if(str.equals("javaweb")) {
								it.remove();//删除迭代器新返回的元素
            }
            System.out.println(str);
        }
        System.out.println(c);
    }
}

4.3、forEachRemaining方法

利用专门遍历Collection集合的Iterator类的forEachRemaining方法

代码语言:javascript复制
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionDemo06{

    public static void main(String[] args) {
        Collection<String> c = new ArrayList<String>() ;
        c.add("java") ;
        c.add("javaweb") ;
        c.add("javascript") ;
        Iterator<String> it = c.iterator() ;
        it.forEachRemaining(str -> System.out.println(str));
    }
}

0 人点赞