码迷,mamicode.com
首页 > 其他好文 > 详细

集合(一)——Collection

时间:2020-04-17 23:29:11      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:contain   new   next   些许   三种遍历方式   ==   通过   正则   iterator   

纯手工敲上去的,可能有些许偏差,见谅

集合的框架

技术图片

Collection集合

存储特点

  • 是单列集合的顶级接口。在这种集合中存储的数据只占一列。所有元素直接存储于各种数据结构中
  • Collection集合没有下标的概念。
    是否有无下标,要通过它底层实现来进行理解。若是数组和链表则就会有下标,反正则没有。

Collection中的方法

修饰&返回值 方法 描述
boolean add(E element) 将一个指定类型的元素, 添加到集合的末尾。
boolean addAll(Collection<E> coll) 批量添加,将一个集合中的所有的元素,添加到当前集合的末尾。
boolean remove(E ele) 删除集合中指定的元素。
boolean removeAll(Collection<E> coll) 删除集合中所有的在参数集合中存在的元素(删除交集)。
boolean retainAll(Collection<E> coll) 保留集合中所有的在参数集合中存在的元素,删除其他元素(保留交集)。
void clear() 清空集合中的所有的数据。
boolean removeIf(Predicate<E> predicate) 删除集合中满足指定条件的数据。
boolean contains(E ele) 判断一个集合中是否包含指定的元素。
boolean containsAll(Collection<E> coll) 判断参数集合中, 是否所有的元素都在当前集合中包含。
int size() 获取集合中元素的数量, 类似于数组 length。
boolean isEmpty() 判断一个集合是否是空集合。
Object[] toArray() 将集合中的元素,转成 Object 数组。
T[] toArray(T[] arr) 将集合中的元素,转成指定类型的数组。

集合的三种遍历方式

-增强for

for (String element : collection) {
        System.out.println(element);
    }

注意事项

在使用增强for循环进行元素的遍历过程中, 不要修改集合中的内容 !!! 否则, 会出现 ConcurrentModificationException 。

-迭代器(Iterator),才是真正用来遍历集合的。

工作原理

  • 使用集合的 iterator() 方法,获取到一个迭代器对象。
  • 这个迭代器对象, 内部维护了一个引用, 指向集合中的某一个元素。 默认指向-1位。
  • 使用next()方法, 向后移动一位元素指向, 并返回新的指向的元素。
  • 如果使用next()方法, 向后移动指向的时候, 已经超出了集合的范围, 指向了一个不存在的元素, 会抛出异常 NoSuchElenmentException。
  • 一般情况下, 配合 hasNext() 方法一起使用的。
     // 1. 获取到一个迭代器对象
    Iterator<String> iterator = collection.iterator();
    // 2. 通过hasNext判断是否还有下一个元素
    while (iterator.hasNext()) {
        // 3. 向后指向,并返回这个新的指向的元素
        String ele = iterator.next();
        System.out.println(ele);
    }

注意:获取迭代器必须紧挨while循环,否则会出现一些错误,比如并发修改异常
错误示例
技术图片
技术图片

-forEach(jdk 1.8及以后提供的方法)

 collection.forEach(System.out::println);

示例代码1

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

public class Test {
    public static void main(String[] args) {
        Collection<String> collection=new ArrayList<>();
        Collection<String> temp=new ArrayList<>();
        collection.add("lucy");
        collection.add("lily");
        collection.add("poly");
        collection.add("uncle wang");
        //使用迭代器进行遍历
        Iterator<String> iterator=collection.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");
        }
    }
}

技术图片

示例代码2

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

public class Test {
    public static void main(String[] args) {
        Collection<String> collection=new ArrayList<>();
        Collection<String> temp=new ArrayList<>();
        collection.add("lucy");
        collection.add("lily");
        collection.add("poly");
        collection.add("uncle_wang");
        //使用增强for遍历
        for(String i:collection){
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("=====================");
        temp.add("uncle_wang");
        temp.add("poly");
        temp.add("lily");
        temp.add("li lei");
        collection.addAll(temp);
        //使用迭代器进行遍历
        Iterator<String> iterator=collection.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");
        }
    }
}

技术图片

示例代码3

public class Test {
    public static void main(String[] args) {
        Collection<String> collection=new ArrayList<>();
        Collection<String> temp=new ArrayList<>();
        Collection<String> del=new ArrayList<>();
        Collection<String> mainTain=new ArrayList<>();
        mainTain.add("lily");
        mainTain.add("lucy");
        mainTain.add("uncle_wang");
        mainTain.add("xiao_feng");
        mainTain.add("xiao_huang");
        del.add("lily");
        del.add("uncle_wang");
        collection.add("lucy");
        collection.add("lily");
        collection.add("poly");
        collection.add("uncle_wang");
        temp.add("uncle_wang");
        temp.add("poly");
        temp.add("lily");
        temp.add("li_lei");
        collection.addAll(temp);
        System.out.println("原collection集合:");
        for (String i : collection) {
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("======================");

        collection.remove("poly");
        System.out.println("删除poly后的collection集合:");
        for (String i : collection) {
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("======================");
        collection.removeAll(del);
        System.out.println("删除与del集合中相同的元素后的collction集合:");
        for (String i : collection) {
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("======================");
        System.out.println("原mainTain集合:");
        for (String i : mainTain) {
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("使用retainAll后的mainTain集合:");
        mainTain.retainAll(del);
        for (String i : mainTain) {
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println("======================");
    }
}

技术图片

将集合转成特定类型的数组

 String[] ret = collection.toArray(new String[0]);
 Integer[] ret = collection.toArray(new Integer[0]);
 Double [] ret = collection.toArray(new Double[0]);
 Object[] array = collection.toArray();

集合(一)——Collection

标签:contain   new   next   些许   三种遍历方式   ==   通过   正则   iterator   

原文地址:https://www.cnblogs.com/dch-21/p/12723187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!