栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java list接口注意项总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java list接口注意项总结

List接口继承自Collection接口,是单列集合的一个重要分支。
在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,
在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一
致。

ArrayList是List接口的一个实现类,底层的存储结构式数组。
ArrayList集合中大部分方法都是从父类Collection和List继承过来的,其中add()方法和get()方法用于实现元素的存取。

package test;

import java.util.*;

public class test1 {
    public static void main(String[] args) {
        List list = new ArrayList();

        //add和get实现集合存取
        list.add("java");
        list.add("python");
        list.add("mysql");
        System.out.println("集合长度" + list.size());
        System.out.println(list);
        //可见集合里的下标也是从0开始的
        System.out.println(list.get(2));

        //输出:
        //集合长度3
        //[java, python, mysql]
        //mysql

        List list1 = new ArrayList();
        list1.add("11");
        list1.add("22");
        list1.add("33");

        System.out.println(list1);
        //实现一个集合追加到另一个集合
        list.addAll(list1);
        System.out.println(list);

        //查看一个元素在集合中最后出现的位置

        System.out.println(list.lastIndexOf("11"));
    }
}


ArrayList集合在查询元素时速度很快,但在增删元素时效率较低。
为了克服这种局限性,可以使用List接口的另一个实现类linkedList。
该集合内部维护了一个双向循环链表,所以linkedList集合对于元素的增删操作具有很高的效率。

package test;

import java.util.linkedList;

public class test2 {
    public static void main(String[] args) {
        linkedList link = new linkedList();
        link.add("java");
        link.add("python");
        link.add("c");
        System.out.println(link);
        System.out.println(link.toString());
        link.add(3, "mysql");
        System.out.println(link);
        link.addFirst("scala");
        System.out.println(link);
        System.out.println(link.getFirst());
        //link.remove(2);

        //输出:
        //[java, python, c]
        //[java, python, c]
        //[java, python, c, mysql]
        //[scala, java, python, c, mysql]
        //scala

    }
}

在程序开发中,经常需要遍历集合中的所有元素。
针对这种需求,JDK专门提供了一个接口Iterator。
Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。

package test;

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

public class test3 {
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add("R");
        list.add("java");
        list.add("python");
        list.add("mysql");
        Iterator iterator=list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}

为了简化书写,从JDK5.0开始,提供了foreach循环。foreach循环是一种更加简洁的for循环,也称增强for循环。foreach循环用于遍历数组或集合中的元素,其具体语法格式如下

package test;

import java.util.ArrayList;

public class test4 {
    public static void main(String[] args) {
        ArrayList list=new ArrayList();
        list.add("C");
        list.add("Java");
        list.add("Python");

        for (Object object:list){
            System.out.println(object);
        }
    }

}

foreach不能用于修改,以一个String类型的数组为例。

package test;

public class test5 {
    static String[] strs = {"aaa", "bbb", "ccc"};

    public static void main(String[] args) {
        for(String str:strs){
            str="ddd";//不能进行更改
        }
        System.out.println("foreach循环修改后的数组:"+strs[0]+";"+strs[1]+";"+strs[2]);

        for (int i=0;i 

迭代器周期内不能增删元素,通过一个案例来演示这种异常。

package test;

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

public class test6 {
    public static void main(String[] args) {
        //test1();
       test2();
        //test3();
    }

    public static void test1() {
        ArrayList list = new ArrayList();
        list.add("java");
        list.add("C");
        list.add("mysql");
        list.add("python");
        Iterator it = list.iterator();
        while (it.hasNext()) {
            Object object = it.next();
            if ("java".equals(object)) {
                list.remove(object);
            }
        }
        System.out.println(list);
    }

    public static void test2() {
        ArrayList list = new ArrayList();
        list.add("java");
        list.add("C");
        list.add("mysql");
        list.add("python");
        Iterator it = list.iterator();
        while (it.hasNext()) {
            Object object = it.next();
            if ("java".equals(object)) {
                list.remove(object);
                list.remove(object);
                break;
            }
        }
        System.out.println(list);
    }
    public static void test3(){
        ArrayList list = new ArrayList();
        list.add("java");
        list.add("C");
        list.add("mysql");
        list.add("python");
        Iterator it=list.iterator();
        while (it.hasNext()){
            Object object=it.next();
            if ("java".equals(object)){
                it.remove();
            }
        }
        System.out.println(list);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号