大数据基础之java单列集合

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务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]
    
    }
    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);
    
        }
    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);
        }
    
    
    }

    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);
        }
    }
  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));
            }
    
        }
    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);
        }
    
    
    }
    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");
    //            }
    //        }
    
    
        }
  4. 增强for

  5. 常见的数据结构

    常用的数据结构
    1. 栈: 先进后出, 后进先出
    2. 队列: 先进先出, 后进后出
    3. 数组: 改和查效率高, 增删效率低
    4. 链表: 增删效率高, 改查效率低
  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);
        }
    
    
    
    }
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
6天前
|
Java 容器
java集合框架复习----(1)
这篇文章提供了Java集合框架的复习资料,包括集合的概念、Collection接口的使用,以及如何通过代码示例演示集合的操作,如增加、删除元素,以及遍历集合元素。
java集合框架复习----(1)
|
5天前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
6天前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
|
6天前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
11天前
|
存储 算法 Java
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
30 2
14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
|
6天前
|
存储 Java
java集合框架复习----(3)Set
这篇文章详细介绍了Java集合框架中的Set集合,包括HashSet和TreeSet的特点、实现原理和使用示例,展示了Set集合的无序性、元素唯一性以及如何通过自定义比较器实现元素的排序。
|
6天前
|
存储 安全 Java
java集合框架学习笔记
这篇文章是关于Java集合框架的详细学习笔记,包括集合的概念、使用方式以及List、Set和Map等集合类型的具体实现和特点。
java集合框架学习笔记
|
11天前
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
50 6
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
53 5
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(上)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
46 3