首页 > 编程语言 >木舟0基础学习Java的第十三天(Collection集合框架)

木舟0基础学习Java的第十三天(Collection集合框架)

时间:2024-07-08 09:30:29浏览次数:11  
标签:Java 木舟 ArrayList 元素 list add 集合 obj 第十三天

Collection(根接口)集合框架

数组和集合的区别:

数组:既可以存储基本数据类型(值)又可以存储引用数据类型(地址值)

       长度:数组的长度是固定的不能自动增长

       使用环境:元素个数固定的时候

集合:只能存储引用数据类型(对象)也可以存储基本数据类型(存储基本数据类型会自动装箱)

       长度:集合的长度是可变的 随着元素的增加而增加

       使用环境:元素个数不固定的时候


List和set的区别:

List:有顺序 有下标索引 存和取都是有序的 可以存重复的 

Set:无顺序 没有下标索引 不能存储重复值 存和取的顺序不能保证


Collection集合的基本功能:

Collection是接口 不能实例化 需要使用多态 接口引用指向间接子类对象

例:Collection c=new ArrayList();//多态 接口引用指向间接子类对象

添加:

c.add(元素);//基本数据类型 自动包装为包装类

c.addAll(c1);//添加所以c1的元素到c集合中

查询:显示集合元素个数

c.size();

查询:是否包含指定的元素

c.contains(指定的元素);//用boolean接收

c.containsAll(c1);//是否包含c1中的全部元素

移除:

c.remove(要移除的元素);//对象不可以这么移除

c.removeAll(c1);//从c中移除所有和c1有交集的元素(没有交接无法移除 保持原来的值)

c.retainAll(c1);//c与c1取交集 c中不是交集的元素被移除 保留交集的元素

清空集合:

c.clear();

判断:判断集合是否为空

c.isEmpty();

遍历:集合转数组遍历

Object[] obj=c.toArray();

for (int i = 0; i <c.size() ; i++) {

        System.out.println(obj[i]);

  }

独立拿到对象中的属性:集合中不能存在基本数据类型的元素

Object[] obj=c.toArray();

for(int i=0;i<obj.length;i++){

Student s=(Student) obj[i];//向下转型

System.out.println(s.getName()+" "+s.getAge()); }

迭代器遍历:

Collection c=new ArrayList();

通过对象返回一个迭代器

Iterator it=c.iterator();

   public static void main(String[] args) {
        Collection c=new ArrayList();
        c.add(3);
        c.add("你好");
        c.add(true);
        c.add(23.7);
        c.add(new Student("木舟",25));
        Iterator it=c.iterator();
        //判断it.hasNext是否存在   如果仍有元素可以迭代,则返回 true
       /* if(it.hasNext()){
            System.out.println(it.next());//it.next()返回迭代的下一个元素
        }*/
        while(it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
        }
    }

并发修改异常

public static void main(String[] args) {
        List l=new ArrayList();
        l.add("i");
        l.add("love");
        l.add("java");
        l.add("programing");
        //Iterator i=l.iterator();//并发修改异常(ConcurrentModificationException)
        ListIterator it=l.listIterator();//ArrayList扩展迭代器
        while(it.hasNext()){
            String s=(String) it.next();
            System.out.println(s);
            if(s.equals("java")){
                it.add("javaee");//添加 要加在迭代器中
            }
        }
        System.out.println(l);
    }

去重(对象去重要在对象类中重写equals方法)

 public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("c");
        System.out.println(list);
        ArrayList single = getSingle(list);
        System.out.println(single);

    }
    public static ArrayList getSingle(ArrayList list){
        //去重方法
        //返回类型 ArrayList 参数类型ArrayList
        ArrayList newlist=new ArrayList();
        //老集合获取迭代器
        Iterator i=list.iterator();
        while(i.hasNext()){
            Object obj = i.next();//每个元素
            //如果新集合中没有老集合中的元素就添加
            if(!newlist.contains(obj)){
                newlist.add(obj);
            }
        }
        return newlist;
    }

链表

链表与数组的区别

数组:查询修改快 增删慢

链表:增删快 查询修改慢

总结

ArrayList:底层数据结构是数组 查改快 增删慢 线程不安全 效率高

Vector:底层数据结构是数组 查改快 增删慢 线程安全 效率低

LinkedList:底层数据结构是链表 查改慢 增删快 线程不安全 效率高

这三个不知道该用那个的时候就用ArrayList

标签:Java,木舟,ArrayList,元素,list,add,集合,obj,第十三天
From: https://blog.csdn.net/tzh525/article/details/140243264

相关文章

  • 03-码出高效:Java开发手册.pdf
    03-码出高效:Java开发手册.pdf03-码出高效:Java开发手册.pdfMySQL技术内幕InnoDB存储引擎第2版.pdf​​‍​​‍‍......
  • Java的对象监视器
    什么是监视器(Monitor)?在Java中,监视器(Monitor)是用来实现线程同步的一种机制。每个Java对象都有一个与之关联的监视器,线程可以通过synchronized关键字来获取和释放对象的监视器。监视器的主要作用是确保在同一时刻只有一个线程可以执行同步块或同步方法,从而实现线程的互斥访问。监......
  • 【Java】详解String类中的各种方法
    创建字符串常见的创建字符串的三种方式://方式一Stringstr="helloworld";//方式二Stringstr2=newString("helloworld");//方式三char[]array={'a','b','c'};Stringstr3=newString(array);"hello"这样的字符串字面值......
  • 03-码出高效:Java开发手册.pdf
    03-码出高效:Java开发手册.pdf03-码出高效:Java开发手册.pdfMySQL技术内幕InnoDB存储引擎第2版.pdf​​‍​​‍‍......
  • 03-码出高效:Java开发手册.pdf
    03-码出高效:Java开发手册.pdf03-码出高效:Java开发手册.pdf​​​​‍​​‍‍......
  • 基于Java“萌宠之家”宠物综合服务平台设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针......
  • 基于Java“镜头人生”约拍网站系统设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本“镜头人生”约拍网站就是在这样的大......
  • 基于Java:流浪动物领养信息系统设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本流浪动物领养信息系统就是在这样的大......
  • 基于Java“花鸣”B2C电子商务平台设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本“花鸣”B2C电子商务平台就是在这样......
  • 语法2-运算符、包机制、JavaDoc
    语法运算符运算符具有优先级-网上查(一般使用括号保证)/-除,%-取余符号-21/10二十一除十取余数,幂运算使用工具类表示Math.pow(2,3)-2的3次方++自加,--自减inta=3;intb=a++;//输出a=4,b=3intb=++a;//输出a=4,b=4==-等于,!=-instanceof-不等于逻辑运算符-与或非-&......