ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

集合(3):Collection下的子接口:List接口

2021-12-21 21:02:33  阅读:91  来源: 互联网

标签:Object java List 元素 list Collection add 接口


集合(3):Collection下的子接口:List接口

一、List接口的概述

(1)有序集合(有序指的是存储和取出的顺序一致)
(2)允许重复的元素
(3)此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素 

创建List集合对象,使用接口多态的形式创建(ArrayList是List可实例化的一个子类)

public class ListDemo1 {
    public static void main(String[] args) {
        //创建List集合对象,使用接口多态的形式创建
        List list = new ArrayList();
		//添加元素到集合里
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("bigdata");
		//调用迭代器
        Iterator iterator = list.iterator();
		//使用while循环遍历集合中的暗元素
        while (iterator.hasNext()) {
            Object next = iterator.next();
            //向下转型 
            String s = (String) next;
            System.out.println(s + ",长度为:" + s.length());
        }
    }
}

二、List接口特有的功能

1、因为List集合拥有下标索引,所以根据这个下标索引衍生出特有方法

(1)添加功能:
        void add(int index,Object element)
            将指定的元素插入此列表中的指定位置
(2)删除功能:
        Object remove(int index)
            删除该列表中指定位置的元素
(3)获取功能:
        Object get(int index)
            返回此列表中指定位置的元素
(4)修改功能:
        Object set(int index,Object element)
            用指定的元素替换此列表中指定位置的元素
(5)List特有迭代器:
        ListIterator<E> listIterator()
            返回列表中的列表迭代器(按适当的顺序)
public class ListDemo2 {
    public static void main(String[] args) {
        //创建List集合对象
        List list = new ArrayList();

        //添加元素到集合中
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("hadoop");
        System.out.println(list);//[hello, world, java, hadoop]
        System.out.println("===============================");

        //void add(int index,Object element)
        //将指定的元素插入此列表中的指定位置
        //如果指数超出范围( index < 0 || index > size() ),size代表元素的个数
        list.add(0, "hive");
        System.out.println(list);//[hive, hello, world, java, hadoop]
        list.add(5, "spark");
        System.out.println(list);//[hive, hello, world, java, hadoop, spark]

        //Object remove(int index)
        //删除该列表中指定位置的元素
        //返回被删除的元素,类型为Object类型
        Object obj = list.remove(0);
        System.out.println(obj);//hive
        System.out.println(list);//[hello, world, java, hadoop, spark]

        //Object get(int index)
        //获取此列表中指定位置的元素
        //原集合中的元素不变
        Object obj2 = list.get(3);
        System.out.println(obj2);//hadoop
        System.out.println(list);//[hello, world, java, hadoop, spark]

        //Object set(int index,Object element)
        //用指定的元素(可选操作)替换此列表中指定位置的元素。
        //返回的是指定位置被替换的元素
        Object obj3 = list.set(3, "flink");
        System.out.println(obj3);//hadoop
        System.out.println(list);//[hello, world, java, flink, spark]

        //获取List迭代器对象,遍历
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            String s = (String) iterator.next();
            System.out.println(s + ",长度为:" + s.length());
            /*
                hello,长度为:5
                world,长度为:5
                java,长度为:4
                flink,长度为:5
                spark,长度为:5
             */
        }
    }
}

2、List集合特有的迭代器

(1)ListIterator extends Iterator
        由于继承自Iterator接口,所以内部一定也有hasNext()方法和next()方法

(2)获取功能:Object previous():返回列表中的上一个元素,并向后移动光标位置
    (当指针指向某一位置,调用该方法,指针就会指向上一位置)
        可以反复调用此方法以向后方遍历列表,或者与调用next()进行混合来回。
        (请注意,对next和previous交替调用将next返回相同的元素。)
        1、该方法是倒着遍历迭代器
        2、该方法的获取元素指针与next()获取元素指针是同一个

(3)判断功能:boolean hasPrevious():判断上一个有没有元素

    注意:
        要想倒着遍历,必须先正着遍历一遍。在开发中很少使用,面试中经常遇到

案例:

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorDemo1 {
    public static void main(String[] args) {
        //创建集合对象
        List list = new ArrayList();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("hadoop");

        //获取List迭代器对象   list.listIterator().var
        ListIterator listIterator = list.listIterator();

        /*
        像之前一样遍历是错误的,因为previous()方法是倒着遍历的
        但是指针一开始是在第一个位置前面
        我们需要将指针移动到最后一个元素的位置后面
        错误案例:
          while (listIterator.hasPrevious()) {
            Object previous = listIterator.previous();
            String s = (String) previous;
            System.out.println(s + ",长度为:" + s.length());
        }
         */

        //先将指针移动到最后一个元素的位置后面
        //先正着遍历一遍,使用hasNext()判断
        while (listIterator.hasNext()){
            //获取集合中的下一个元素
            Object next = listIterator.next();
            //向下转型
            String s = (String) next;
            System.out.println(s + ",长度为:" + s.length());
        }

        //然后再倒着遍历,使用hasPrevious()判断
        while (listIterator.hasPrevious()){
            //获取集合中的上一个元素
            Object previous = listIterator.previous();
            //向下转型
            String s = (String) previous;
            System.out.println(s + ",长度为:" + s.length());
        }
    }
}

3、List集合特有的遍历方式(仅限于List集合)

size()方法和get()方法的结合使用
     size()方法:获取集合的长度
     get()方法:获取结合的元素

遍历List集合元素

import java.util.ArrayList;
import java.util.List;

public class ListDemo3 {
    public static void main(String[] args) {
        //创建集合对象
        List list = new ArrayList();

        //向集合中添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("bigdata");

        //size()方法和get()方法的结合使用
        for (int i = 0; i < list.size(); i++) {
            Object obj = list.get(i);

            //向下转型
            String s = (String) obj;
            System.out.println(s + ",长度为:" + s.length());
        }
    }
}
                执行结果如下:
                            hello,长度为:5
                            world,长度为:5
                            java,长度为:4
                            hadoop,长度为:6
                            hadoop,长度为:6
                            java,长度为:4
                            world,长度为:5
                            hello,长度为:5

                            Process finished with exit code 0

遍历学生对象信息

import java.util.ArrayList;
import java.util.List;

public class ListDemo4 {
    public static void main(String[] args) {
        //创建集合对象
        List list = new ArrayList();

        //创建学生对象
        Student s1 = new Student("王力宏", 45);
        Student s2 = new Student("李元浩", 22);
        Student s3 = new Student("智勋", 24);
        Student s4 = new Student("呆妹", 22);
        Student s5 = new Student("乌兹", 21);

        //将学生对象添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);

        //使用size()和get()方法遍历
        for (int i = 0; i < list.size(); i++) {
            Student student = (Student) list.get(i);
            System.out.println(student.getName() + "---" + student.getAge());
        }
    }
}

标签:Object,java,List,元素,list,Collection,add,接口
来源: https://www.cnblogs.com/saowei/p/15717122.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有