欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中各种数据结构的遍历

程序员文章站 2022-03-10 14:52:44
...

一、List

1.遍历:

        List<String> strList = new ArrayList<>();
        // 1. 普通遍历方式
        for (int i = 0; i < strList.size(); i++) {
            System.out.println(strList.get(i));
        }
        // 2.for:each循环
        for (String str : strList) {
            System.out.println(str);
        }
        // 3. 使用Iterator迭代器
        Iterator<String> it = strList.iterator();
        while (it.hasNext()) {
            String str = (String) it.next();
            System.out.println(str);
        }
        // 4. java8 Lambda方式
        // strList.forEach(System.out::println);//和下面的写法等价
        strList.forEach(str -> {
            System.out.println(str);
            });

常用的1、2两种方式

2.add方法

    List接口中的add方法有如下两种重载方式:
        ① boolean add(E e);
        ② void add(int index, E element);

方法①用于向列表的末尾插入新元素,这也是List接口中最常用的插入方法;

方法②则可以在插入操作过程中指定插入的位置,此时,会自动将当前位置及只有的元素后移进行插入

需要注意的是,参数index的值不可大于当前list的容量,即在使用此方法填充一个list时,必须以0开始依次填充。

注意,即使在创建list对象时指定了初始化大小,依旧会有以上问题

     addAll方法和add方法类似,区别在于addAll方法可以一次插入一个集合中的多个元素,重载方法也有两种:
       ① boolean addAll(Collection<? extends E> c);
       ② boolean addAll(int index, Collection<? extends E> c);

对于包含下标参数index的方法②,在使用时具有和包含index参数的add方法同样的限制条件,在执行插入前同样会检查size的值,如果指定的index值大于size值,则会抛出异常

最后需要注意的是,addAll方法中的集合c不可以传入null值,否则会有异常。

另外,该方法没有线程安全的设置,当传入的参数c正在被另一个线程操作时,其结果是不确定的

 3.set方法

set方法直观上根据方法名可以理解为设置list中某个位置的元素。但需要注意的是,该方法本质上是一种替换操作,即,要设置某个位置上的元素,这个位置在设置前必须有元素,否则会抛出异常

对于上面的异常,可以采取预填充的方式,如下:

public class Main {
    public static void main(String[] args) {
        List<String> stringList = new ArrayList<>();
        stringList.add(null);
        stringList.add(null);
        stringList.add(null);
        stringList.add(null);
        stringList.add(null);
        stringList.add(null);
        
        stringList.set(2, "2");
        stringList.set(1, "1");
        stringList.set(0, "0");
        stringList.set(4, "4");
        stringList.set(3, "3");
        stringList.set(5, "5");
        
        System.out.println(stringList);
    }

 程序首先对list进行了null填充,然后在通过set方法替换为有用的数据

二、MAP

相关标签: 软件构造笔记