Java教程

Java:list接口

本文主要是介绍Java:list接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

概述:

继承自Collection接口

1、List集合中的元素是有序的;

2、List集合中的元素可以重复;

3、List集合包含了索引概念;

package day17;


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

public class List1 {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("hello");
        list.add("world");
        list.add("bigdata");
        list.add("java");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            String s=(String) iterator.next();
            System.out.println(s+"---"+s.length());
//            hello---5
//            world---5
//            bigdata---7
//            java---4
        }
    }
}

List相关集合特有的功能:

因为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 listiterator()返回列表中的迭代器

import java.util.ArrayList;
import java.util.List;
       
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("bigdata");
        list.add("hadoop");
        System.out.println(list);
//        System.out.println("======================================");
//        //void add(int index, Object element) 将指定的元素插入此列表中的指定位置(可选操作)。
//        //超出的范围:index < 0 || index > size() ===>  0<=index<=size()  ===>  [0,size()]
//        list.add(0,"hive");
//        System.out.println(list);
//        list.add(5,"spark");
//        System.out.println(list);
//        list.add(7,"flink");
//        System.out.println(list);
//        list.add(10,"Hbase"); //IndexOutOfBoundsException
//        System.out.println(list);
//        System.out.println("======================================");
        //Object remove(int index) 删除该列表中指定位置的元素(可选操作)。
//        System.out.println(list.remove(3));
//        System.out.println(list);
//        System.out.println("======================================");
//        //Object get(int index) 返回此列表中指定位置的元素。
//        System.out.println(list.get(4));
//        System.out.println(list);
        System.out.println("======================================");
        //Object set(int index, Object element) 用指定的元素(可选操作)替换此列表中指定位置的元素。
        //返回的是指定位置被替换的元素
        Object obj = list.set(2, "hive");
        System.out.println(obj);
        System.out.println("list:" + list);




    }
}

List集合特有的迭代器:

ListIterator listiterator()返回列表中的迭代器,public interface ListIterator extends Iterator,由于ListIterator继承自Iterator接口,所以内部一定有hasNext()和next()方法;

Objiect previous返回列表中的上一个元素,并向后移动光标的位置。可以反复调用此方法以向后遍历列表,或者用next()进行混合来回。

1、该方法是获取集合中前一个元素。

2、该方法获取指针与next()指针是同一个。

注意:要想倒着遍历,就必须先正着遍历,先将指针移动到末尾。在开发中不常用,但是在面试中可能会问到。
boolean hasPrevious() 返回 true如果遍历反向列表,列表迭代器有多个元素。
    判断上一个位置是否铀元素,如果有元素返回true,如果没有元素,返回false。
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;


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

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

     
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()) {
            String s = (String) listIterator.next();
            System.out.println(s + ",字符串的长度为:" + s.length());
        }
//        Object previous = listIterator.previous();
//        System.out.println(previous); //NoSuchElementException

        while (listIterator.hasPrevious()){
            Object previous = listIterator.previous();
            System.out.println(previous);
        }

    }
}

size与get方法结合使用:

List集合遍历方式:

1、调用toArray()方法,转为数组遍历

2、迭代器遍历

3、size()与get()方法结合遍历

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


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

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

        //size()与get()方法结合使用遍历集合
        for (int i = 0; i < list.size(); i++) {
            Object o = list.get(i);
            //向下转型
            String s = (String) o;
            System.out.println(s + ",字符串的长度为:" + s.length());
        }

    }
}

添加学生对象:

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

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

        //2、创建学生对象
        Student s1 = new Student("小白", 18);
        Student s2 = new Student("小黑", 19);
        Student s3 = new Student("小辉", 20);
        Student s4 = new Student("大黄", 17);

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

        //遍历
        //a:转成数组遍历
        Object[] objects = list.toArray();
        for (int i = 0; i < objects.length; i++) {
            Student s = (Student) objects[i];
            System.out.println(s.getName() + "---" + s.getAge());
        }

        System.out.println("=======================================");
        //b:迭代器遍历
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Student s = (Student) iterator.next();
            System.out.println(s.getName() + "---" + s.getAge());
        }

        System.out.println("=======================================");
        //c:get()和size()方法结合遍历(这是List集合特有的遍历方式,因为有索引的概念)
        for (int i = 0; i < list.size(); i++) {
            Student s = (Student) list.get(i);
            System.out.println(s.getName() + "---" + s.getAge());
        }


    }
}

需求:有一个集合,集合中存储着一些字符串类型的元素,我想判断里面有没有"bigdata"这个字符串,如果有就添加一个"yes"。

由于迭代器是依赖于集合而存在的,在遍历迭代器中的元素的时候,我们判断成功后往集合中天加一个元素,但是迭代器此时并不知道添加了元素所以会报错。所以在迭代器报错时不能通过集合修改元素。

解决办法:
1、迭代器遍历,迭代器修改。

2、集合遍历,集合修改。

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

public class List6 {
    public static void main(String[] args) {
        List list=new ArrayList<>();
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("bigdata");
        list.add("hive");
        for (int i=0;i< list.size();i++){
            String s=(String) list.get(i);
            if ("bigdata".equals(s)){
                list.add("yes");
            }
            System.out.println(s);
        }


    }
}

这篇关于Java:list接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!