大数据基础之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]
    
    }
    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的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
3月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
246 100
|
3月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
279 101
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
91 7
|
4月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
264 23
|
3月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
4月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。
|
4月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
245 12
|
4月前
|
存储 NoSQL Java
Java Stream API:集合操作与并行处理
Stream API 是 Java 8 提供的集合处理工具,通过声明式编程简化数据操作。它支持链式调用、延迟执行和并行处理,能够高效实现过滤、转换、聚合等操作,提升代码可读性和性能。
|
4月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。

热门文章

最新文章