大数据基础之java单列集合

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据基础之java单列集合

单列集合

  1. 单列集合介绍

  2. Collection集合

    1. 集合的定义
    public static void main(String[] args) {
        // 注意: Collection 是顶层接口,不能进行数据实例化,所以我们想要获取其对象,需要使用子类实例化后赋值给父类变量
        // 单列集合的定义格式:
        //  集合类型<泛型> 集合名称 = new 集合类型<泛型>();
        // 定义集合时,如果在前边书写了泛型, new后边的类型就可以省略泛型,前后泛型必须一致
        Collection<String> list = new ArrayList<>();
    
        //添加数据,可以使用add API进行添加数据
        list.add("hello");
        list.add("world");
        list.add("java");
    
        // 在集合中重写了toString 可以直接打印集合中的数据内容
        System.out.println(list); // [hello, world, java]
    
    }
    AI 代码解读
    1. 集合的成员方法
     public static void main(String[] args) {
            // 定义单列集合对象
            Collection<String> list = new ArrayList<>();
    
            //添加数据,可以使用add API进行添加数据
            //1.public boolean add(E e) 添加元素.
            list.add("hello");
            list.add("world");
            list.add("java");
    
            //2.public boolean remove(Object obj) 从集合中移除指定的元素.
            // 删除成功,返回true 如果删除不成功返回false
            boolean h = list.remove("hello");
            System.out.println(h);
            //3.public void clear() 清空集合对象
    //        list.clear();
            //4.public boolean contains(Object obj) 判断集合中是否包含指定的元素
            // 如果包含,返回true, 如果不包含,返回false
            System.out.println(list.contains("hello"));
            System.out.println(list.contains("传智"));
            //5.public boolean isEmpty() 判断集合是否为空
            System.out.println(list.isEmpty());
            //6.public int size() 获取集合的长度, 即集合中元素的个数
            System.out.println(list.size());
            // 获取字符串长度length()
            // 获取数组长度 length
    
            // 在集合中重写了toString 可以直接打印集合中的数据内容
            System.out.println(list);
    
        }
    AI 代码解读
    1. 集合遍历
    public static void main(String[] args) {
        // 创建Collection对象
        Collection<String> list = new ArrayList<>();
    
        //添加数据,可以使用add API进行添加数据
        list.add("hello");
        list.add("world");
        list.add("java");
    
        // 遍历  Collection对象不能通过下标获取元素数据
        // 方法一: 使用迭代器对集合进行迭代
        //1.构造迭代器
        Iterator<String> itor = list.iterator();
        //2.判断迭代器中是否存在下一个元素,如果存在,则获取,如果不存在,终止循环 hasnext
        // 分析: 我们使用哪种方式循环?? while 因为循环次数不定
        // hasNext()判断集合中是否存在下一个值
        // next()获取集合中的下一个值
        while (itor.hasNext()){
            System.out.println(itor.next());
        }
    
        // 方法二: 增强for  foreach
        // 格式: for(临时变量类型 临时变量 : 集合或者数组){}
        // 增强for 会以此从集合汇总获取每一个值,并赋值给临时变量
        for (String s: list){
            System.out.println(s);
        }
    
    
    }
    AI 代码解读

    4.集合储存对象数据

    public static void main(String[] args) {
        //1. 创建集合对象
        Collection<Student> stuList = new ArrayList<>();
        //2.向集合对象中添加数据
        stuList.add(new Student("小明", 12));
        stuList.add(new Student("小方", 13));
        stuList.add(new Student("小莉", 15));
    
        //3.输出集合对象的值
        System.out.println(stuList);
    
        // 4.遍历集合
        for(Student s : stuList){
            System.out.println(s);
        }
    }
    AI 代码解读
  3. List集合

    List的遍历

    public static void main(String[] args) {
            // 1.创建list集合对象
            ArrayList<Student> stuList = new ArrayList<>();
    
            // 2.向list集合对象中添加学生信息
            stuList.add(new Student("小明", 12));
            stuList.add(0, new Student("小方", 14));
            stuList.add(new Student("小红", 15));
    
            // 3.打印集合对象
    //        System.out.println(stuList);
    
            // 4.遍历集合对象
            // 方法一: 普通迭代器
            Iterator<Student> itor = stuList.iterator();
    //        while (itor.hasNext()){
    //            System.out.println(itor.next());
    //        }
            //迭代器的快捷键是 itit
            while (itor.hasNext()) {
                Student s = itor.next();
                System.out.println(s);
            }
            System.out.println("---------------");
            // 方法二: 列表迭代器
            ListIterator<Student> sitor = stuList.listIterator();
    
            while (sitor.hasNext()) {
                Student s = sitor.next();
                System.out.println(s);
            }
            System.out.println("---------------");
    
            // 方法三: 增强for
            //增强for 的快捷键是 iter
            for (Student s : stuList) {
                System.out.println(s);
            }
            System.out.println("---------------");
    
            // 方法四:普通for
            for (int i = 0; i < stuList.size(); i++) {
                System.out.println(stuList.get(i));
            }
    
        }
    AI 代码解读
    1. list的正向遍历和逆向遍历
    public static void main(String[] args) {
        // 创建list对象
        ArrayList<String> list = new ArrayList<>();
    
        // 添加数据
        list.add("hello");
        list.add("world");
        list.add("java");
    
        // 打印列表对象
        System.out.println(list);
        
        //构造列表迭代器
        ListIterator<String> sitor = list.listIterator();
        
        // 正向遍历
        while (sitor.hasNext()) {
            String s = sitor.next();
            System.out.println(s);
        }
        // 逆向遍历
        while (sitor.hasPrevious()) {
            String s =  sitor.previous();
            System.out.println(s);
        }
    
    
    }
    AI 代码解读
    1. 并发修改异常
    public static void main(String[] args) {
            // 创建list对象
            ArrayList<String> list = new ArrayList<>();
    
            // 添加数据
            list.add("hello");
            list.add("world");
            list.add("java");
    
            // 创建迭代器
    //        Iterator<String> itor = list.iterator();
            //遍历集合
            // ConcurrentModificationException
            // 并发修改异常, 在我们使用迭代器的过程中不能修改迭代器控制的集合
    //        while (itor.hasNext()) {
    //            String s = itor.next();
    //            if (s.equals("world")){
    //                list.add("javaEE");
    //            }
    //        }
    
            // 方法一: 使用listIterator
            ListIterator<String> sitor = list.listIterator();
    
            while (sitor.hasNext()) {
                String s = sitor.next();
                if (s.equals("world")){
                    //ConcurrentModificationExceptio
                    // 在此处使用集合的add方法依然会报并发修改异常
    //                list.add("javaEE");
                    //如果想要解决这个问题需要使用listIterator中的add方法
                    sitor.add("javaEE");
                }
            }
    
            // 方法二: 直接使用普通for循环,不构造迭代器
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).equals("world")){
                    list.add("javaEE");
                }
            }
    
            System.out.println(list);
    
            // 注意:增强for本质上也是使用了迭代器,所以也存在并发修改异常
    //        for (String s : list) {
    //            // ConcurrentModificationException
    //            if (s.equals("world")){
    //                list.add("javaEE");
    //            }
    //        }
    
    
        }
    AI 代码解读
  4. 增强for

  5. 常见的数据结构

    常用的数据结构
    1. 栈: 先进后出, 后进先出
    2. 队列: 先进先出, 后进后出
    3. 数组: 改和查效率高, 增删效率低
    4. 链表: 增删效率高, 改查效率低
    AI 代码解读
  6. List集合的子类

  7. Set集合

    set集合保存对象

    public static void main(String[] args) {
        // 创建hashset对象
        HashSet<Student> hs = new HashSet<>();
        // 添加数据
        hs.add(new Student("小明", 15));
        hs.add(new Student("小方", 14));
        hs.add(new Student("小黄", 16));
        hs.add(new Student("小黄", 16));
    
        // 遍历集合将结果打印到控制台上
        // 使用功能hashset保存对象,如果重写hashcode方法,同样成员变量的对象将被去重,否则不去重
        Iterator<Student> itor = hs.iterator();
        while (itor.hasNext()) {
            Student s = itor.next();
            System.out.println(s);
        }
    
    
    
    }
    AI 代码解读
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
打赏
0
0
1
0
2
分享
相关文章
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
44 0
Java 大视界 -- 基于 Java 的大数据可视化在城市地下管网管理与风险预警中的应用(275)
本文系统阐述 Java 与大数据可视化技术在城市地下管网管理中的应用,涵盖数据采集、三维建模、风险预警及性能优化,结合真实案例提供可落地的技术方案。
Java 大视界 -- Java 大数据在智能教育学习社区用户互动分析与社区活跃度提升中的应用(274)
本文系统阐述 Java 大数据技术在智能教育学习社区中的深度应用,涵盖数据采集架构、核心分析算法、活跃度提升策略及前沿技术探索,为教育数字化转型提供完整技术解决方案。
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
本文围绕基于 Java 的大数据分布式存储在视频监控数据管理中的应用展开,分析管理现状与挑战,阐述技术应用,结合案例和代码给出实操方案。
Java 大视界 -- Java 大数据在智慧文旅虚拟场景构建与沉浸式体验增强中的技术支撑(168)
本文围绕 Java 大数据在智慧文旅领域的应用展开,系统阐述了数据采集、3D 建模、游客行为分析等核心技术的原理与实现,结合实际案例,全方位展示了 Java 大数据在推动智慧文旅发展中的显著价值。
Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战(167)
本文围绕基于 Java 的大数据实时流处理技术,深入探讨其在工业物联网设备状态监测中的应用与挑战。不仅介绍了技术架构、原理和案例,还引入边缘计算技术,提出应对数据质量、性能和安全等问题的策略。
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
169 5
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问