Java集合 Collection接口常用方法

鳄鱼君

发表文章数:642

热门标签

, , ,

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Java » Java集合 Collection接口常用方法

Java中集合分为两大类:
单个方式存储元素:java.util.Collection;
键值对方式存储元素:java.util.Map;

java.util.Collection

Collection中能存放什么元素:没有使用泛型之前,Collection中可以存放Object的所有子类型;是由泛型之后,Collection中只能存储某个具体的类型。

只要是Object的子类都可以存放到Collection中。(集合中不能直接存储基本数据类,也不能存java对象,只能存储java对象的内存地址)。

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

public class CollectionTest {
    public static void main(String[] args) {
        // 创建一个集合对象
        // Collection c = new Collection();// 接口是抽象的,不能创建对象
        // 多态
        Collection c = new ArrayList();
        // 测试Collection接口中常用方法
        // 存放的是对象的内存地址
        // 自动装箱 相当于Integer x = new Integer(1200);
        c.add(1200);
        c.add(new Object());
        c.add(true);
        // 获取集合中元素的个数
        System.out.println("集合中元素的个数:" + c.size());//3
        // 清空集合
        c.clear();
        System.out.println("集合中元素的个数:" + c.size());//0

        c.add("hello world");// 存的是内存地址
        c.add("鳄鱼君");

        // 判断集合中是否包含元素
        boolean b1 = c.contains("鳄鱼君");
        System.out.println(b1);//true 包含

        // 移除集合中某个元素
        c.remove("鳄鱼君");
        boolean b2 = c.contains("鳄鱼君");
        System.out.println(b2);// false
    }
}

contains方法是用来判断集合中是否包含某个元素的方法,底层是调用equals方法进行比对的,equals返回true就表示包含这个元素,remove方法也是这样

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

public class CollectionTest {
    public static void main(String[] args) {
        // 创建一个集合对象
        // Collection c = new Collection();// 接口是抽象的,不能创建对象
        // 多态
        Collection c = new ArrayList();
        c.add(1200);

        // 判断集合是否为空
        System.out.println(c.isEmpty());//false
        c.clear();
        System.out.println(c.isEmpty());//true

        c.add("鳄鱼君1");
        c.add("鳄鱼君2");
        // 转换成数组
        Object[] objs = c.toArray();
        for (int i = 0; i < objs.length; i++) {
            System.out.println(objs[i]);
        }
    }
}

集合迭代:

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

public class CollectionTest {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(1200);
        c.add("abc");
        c.add(true);
        c.add(1);
        c.add(1);
        c.add(new Object());

        // 对集合Collection进行遍历/迭代
        // 获取集合对象的迭代器对象Iterator
        Iterator iterator = c.iterator();

        // 迭代数据
        // 存进去什么类型,取出来还是什么类型,只不过在输出的时候会转成字符串
        while (iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println(obj);
        }
    }
}
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class CollectionTest {
    public static void main(String[] args) {
        // 无序不可重复,存进去和取出的顺序不一定相同
        Collection c = new HashSet();
        c.add(1200);
        c.add(3);
        c.add(1);
        c.add(2);
        c.add(1);
        c.add(3);
        c.add(2);

        Iterator iterator = c.iterator();

        while (iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println(obj);
        }
    }
}

当集合的结构发生改变时,迭代器必须重新获取,如果还是使用以前的迭代器,会出现异常:java.util.ConcurrentModificationException

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

public class CollectionTest {
    public static void main(String[] args) {
        // 无序不可重复,存进去和取出的顺序不一定相同
        Collection c = new ArrayList();

        c.add(1);
        c.add(2);
        c.add(3);
        c.add(3);

        Iterator iterator = c.iterator();
        while (iterator.hasNext()){
            Object obj = iterator.next();
            // 删除元素,集合元素结构发生改变,需要重新获取迭代器
            // 直接通过集合去删除元素,没有通知迭代器
            // 导致迭代器的快照和原集合状态不同
            // c.remove();

            // 使用迭代器来删除元素,迭代器指向的当前元素
            iterator.remove();

            System.out.println(c.size());
        }
    }
}

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Java集合 Collection接口常用方法》 发布于2020-08-16

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

8 + 2 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册