Collection集合的功能:
            Object[] toArray() 将集合转成数组
            Iterator iterator() 通过方法的调用 获取Iterator迭代器对象
   //  遍历集合的常见方式
        //方式1 Object[] toArray() 将集合转成数组
        //普通for 循环 遍历集合 toArray()方法 将集合转成Object[]数组
        Object[] arr = c.toArray();
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
        Collection c2 = new ArrayList();
        c2.add(new Student("王二麻子",20));
        c2.add(new Student("赵四",40));
        Object[] arr2 = c2.toArray();
        for(int i=0;i<arr2.length;i++){
            //向下转型
            Student s = (Student)arr2[i];
            System.out.println(s.getName());
        }
        //方式2 增强for循环
        /*
            格式
                for(元素类型 变量名:要遍历的范围){
                    循环体语句
                }
                变量名 随便写
                但是在增强for循环中 它代表的是当前遍历范围内的元素本身
            缺点:
                丢掉了索引
                就不能根据索引获取元素了
        */
        for(Object o:arr2){
            System.out.println(o);//arr2[i] 元素本身
            //向下转型
            Student s = (Student)o;
            System.out.println("增强for 循环:::::"+s.getName());
        }

int[] arr3 ={1,2,3};
        for(int x:arr3){
            System.out.println(x);
        }
      迭代器:
       public static void main(String[] args)
    {
        Collection c = new ArrayList();
        c.add("a");
        c.add("b");
        c.add("c");
        c.add("d");
        System.out.println(c);
        c.add("qqq");
        //Iterator iterator() 迭代器
        Iterator it = c.iterator();
        /*
            boolean hasNext() 如果仍有元素可以迭代,则返回 true。
            Object next() 返回迭代的下一个元素。
            void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
        */
        //循环的结束条件是什么 hasNext()--> false 就结束
        while(it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
            if("b".equals(obj)){//为了避免出现空指针异常 在使用equals进行比较时 建议将常量写在前面
                //it.remove();
                //c.remove("b");//ConcurrentModificationException 多线程并发访问异常
            }
        }
        c.add("cccc");
        c.remove("a");
        System.out.println(c);
    }

/*list
        增
            add(index,element)在指定位置添加元素 角标从0开始
            addAll(index,Collection)
        删
            remove(index)删除指定位置的元素 角标从0开始
        改
            set(int index, E element) 修改指定位置的元素 角标从0开始
        查
            get(int index) 获取指定位置的元素
            subList(int fromIndex, int toIndex)  
        */
创建List 集合 存储Student对象 并对其进行排重处理
public static void main(String[] args)
    {
        //创建List 集合 存储Student对象 并对其进行排重处理
        List list = new ArrayList();
        list.add(new Student("张飞",30));
        list.add(new Student("诸葛亮",40));
        list.add(new Student("曹操",50));
        list.add(new Student("诸葛亮",40));

System.out.println(list);

ArrayList newList = getSingle(list);
        System.out.println(newList);
    }
    public static ArrayList getSingle(List list){
        ArrayList al = new ArrayList();
        Iterator it = list.iterator();
        while(it.hasNext()){
            Object obj = it.next();
            if(!al.contains(obj)){//contains 包含 底层依托的是equals方法 Object类 默认equals方法比较的是地址值
                al.add(obj);
            }
        }
        return al;
    }
}

student类中的contains 包含 底层依托的是equals方法 Object类 默认equals方法比较的是地址值
    //重写 equals方法 比较属性是否相同 (不会看15)
    public boolean equals(Object obj){
        if(!(obj instanceof Student)){
            return false;
        }
        Student stu = (Student)obj;
        return this.name.equals(stu.name) && this.age == stu.age;
    }

List集合特有的迭代器ListIterator
            hasNext()
            next()
            注意 指针 先向后移动 再移动回来 单独写previous 获取不到数据 必须
                        先将指针向后移动 才能向前移动
            hasPrevious()
            previous()
        //List集合特有的迭代器 ListIterator
        List list = new ArrayList();
        list.add(new Student("张三", 23));
        list.add(new Student("李四", 24));
        list.add(new Student("王五", 25));
        for(int i=0;i<list.size();i++){
            Student stu = (Student)list.get(i);
            System.out.println(stu.getName()+",,,"+stu.getAge());
        }
        //ListIterator
        ListIterator it = list.listIterator();
        while(it.hasNext()){
            Student stu = (Student)it.next();
            System.out.println("ListIterator::::"+stu.getName());
            if("张三".equals(stu.getName())){
                it.add(new Student("赵四", 44));
            }
        }
        System.out.println(list);
        //注意 指针 先向后移动 再移动回来 单独写previous 获取不到数据 必须 先将指针向后移动 才能向前移动
        while(it.hasPrevious()){
            System.out.println("结果:"+it.previous());
        }
    }
Vector
        Vector集合 底层是数组
        Vector 和 ArrayList使用方法一样
        遍历方式不同
            Enumeration<E> elements()
            枚举遍历 只能是Vector使用 高版本的List集合无法使用
            实际开发中 使用近乎都是ArrayList
              public static void main(String[] args) {
        Vector v = new Vector();
        v.addElement("c");
        v.addElement("b");
        v.addElement("a");
        System.out.println(v);
        /*
         * 遍历集合 方式 使用枚举遍历
         * */
        Enumeration en = v.elements();
        while(en.hasMoreElements()){
            System.out.println(en.nextElement());
        }
    }

    Set        
             排序(升序) 按照自然顺序排序 ASCII码表的顺序排序
             TreeSet集合 如何给自定义数据类型进行排序?
            第一种方式====我是方法===========
                让自定义类 实现 public interface Comparable<T>接口
                此接口强行对实现它的每个类的对象进行整体排序。
                这种排序被称为类的自然排序,
                类的 compareTo 方法被称为它的自然比较方法。
                /*
                 * 返回:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象
                 * 此对象 小于 指定对象 返回 负整数
                 * 此对象 等于 指定对象 返回 0
                 * 此对象 大于 指定对象 返回正整数
                 * */========我是方法==============
            public int compareTo(Object o) {
        // 此对象 this  和  指定对象Object进行比较 按照年龄排序
        /*
         * 返回:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象
         * 此对象 小于 指定对象 返回 负整数
         * 此对象 等于 指定对象 返回 0
         * 此对象 大于 指定对象 返回正整数
         * */
        Teacher t = (Teacher)o;//向下转型
        //System.out.println(this.getAge()+","+this.getName()+",,"+t.getAge()+".."+t.getName());
        if(this.getAge() < t.getAge()){
            return -1;
        }
        if(this.getAge() == t.getAge()){
            //equals
            //String 类的 compareTo方法
            //如果参数字符串等于此字符串,则返回值 0;
            //如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;
            //如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
            return this.getName().compareTo(t.getName());
            //return 0;
        }
        return 1;

第二种方式=======我是方法================
                让容器具备比较性
                在创建TreeSet集合的同时 传入public interface Comparator<T>接口
                重写 compare方法
                强行对某个对象 collection 进行整体排序 的比较函数。
                /*
                 * 参数:
                    o1 - 要比较的第一个对象。
                    o2 - 要比较的第二个对象。
                    返回:
                    根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
                        第一个参数 小于 第二个参数 返回 负整数
                        第一个参数 等于 第二个参数 返回 0
                        第一个参数 大于 第二个参数 返回 正整数

=============我是方法=====================

遍历集合的常见方式,排序,用lambda表示是怎样的的更多相关文章

  1. Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)

    示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...

  2. java里遍历map的常见方式

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  3. Java List集合 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.ArrayList; import java.util.List; /** * @A ...

  4. Java Map集合 遍历 五种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.HashMap; import java.util.Iterator; import ...

  5. Java Array数组 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...

  6. java8的lambda过滤list遍历集合,排序

    1.根据属性过滤list List<AllManagerBean> testLists = broadCastRoomMapper.allManagerlist(); List<Al ...

  7. Lambda表达式遍历集合

    1.Collection Java 8 为Iterable接口新增了一个forEach(Consumer action)默认方法,该方法所需参数的类型是一个函数式接口,而Iterable接口是Coll ...

  8. Java forEach 方式遍历集合(Java 8 新特性)

    JDK 8 新增 forEach 方式遍历集合,这种方式比原来的 for each 循环还要简洁和便利. 需要注意:如果你计算机安装的是 JDK 8 以前的版本,是不支持 JDK 8 的新特性 Lis ...

  9. 集合遍历数组三种常用方式(Collecton和Map)

    Collection集合遍历数组的三种方式: 迭代器 foreach(增强for循环) JDK1.8之后的新技术Lambda 迭代器: 方法:public Iterator inerator():获取 ...

随机推荐

  1. 在腾讯云服务器上安装JDK+Tomcat并启动tomcat

    由于Java web项目需要使用到tomcat所以决定在腾讯云服务器(centos7.X)上安装JDK和tomcat,来部署我们的项目. 准备工具: 云服务器:centos7.x+ 本地连接服务器:X ...

  2. yii批量数据插入

    yii框架批量插入数据有两种方法,第一种是循环多次插入和一次批量插入,第一种方法要注意插入数据中间有一次数据插入失败要注意回滚事务 循环插入数据 第一种方法 $model = new User(); ...

  3. Oracle最大进程连接数问题

    问题描述 分析报告保存功能,在本地测试使用时可以正常保存:但是部署在客户现场的系统该功能无法保存成功(全部保存): ---->代码功能没有问题,问题应该在服务器配置或者数据库配置等方面出现问题: ...

  4. 使用hexo,创建博客

    下载hexo工具 1 npm install hexo-cli -g 下载完成后可以在命令行下生成一个全局命令hexo搭建博客可用thinkjs 创建一个博客文件夹 1 hexo init 博客文件夹 ...

  5. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...

  6. 关于js传送json到.net后台处理

    这里的内容好像跟标题不太符合,应该是如何实现将请求得到的结果作为另一个请求的请求参数,方法就是使用json处理配合全局变量进行处理 今天做项目遇到以下情景,页面请求获得一个list数据,然后要将得到的 ...

  7. EOS2.0环境搭建-centos7

    需要安装启动的有三个组件 nodes,keosd,cleos,看看三者的关系 nodeos:核心程序,用于启动eos节点服务,在后台运行,可以配置不同 插件.该进程负责账户管理.区块生成.共识建立,并 ...

  8. Linux学习4-部署LAMP项目

    前言 LAMP——linux  Apache  Mysql  PHP 今天我们来学习如何在Linux部署Discuz论坛 准备工作 1.一台linux服务器,没有购买服务器的小伙伴也可以使用虚拟机,操 ...

  9. MySQL数据库无完整备份删库,除了跑路还能怎么办?

    1.背景 前段时间,由于运维同事的一次误操作,清空了内网核心数据库,导致了公司内部管理系统长时间不可用,大量知识库内容由于没有备份险些丢失. 结合这两天微盟的删库跑路事件,我们可以看到,数据库的备份与 ...

  10. url,href和src的区别,defer和async的区别

    URL(Uniform Resource Locator):统一资源定位符,互联网上的每个文件都有一个唯一的URL,基本URL包含协议,IP地址,路径和文件名. 重点:herf和src的区别 href ...