zoukankan      html  css  js  c++  java
  • 《疯狂Java讲义精粹》读书笔记14 List集合基础

    =============《疯狂Java讲义精粹》读书笔记14 ------  List集合基础================

      List集合代表一个元素有序可重复的集合,集合中每个元素都有其对应的顺序索引。List集合默认按元素的添加顺序设置元素的索引,第一个索引默认为0,之后的递增。

      List集合中的常用操作元素的方法:

        · void add(int index, Object element): 将元素element插入到元素的index处;
        · boolean addAll(int index, Collection c): 将集合c 所包含的所有元素都插入到List集合的index处
        · Object get(int index):返回集合index索引处的元素;
        · int indexOf(Object o):返回对象o在List集合中第一次出现位置的索引
        · inr lastIndexOf(Object o):返回对象o在List集合中最后一次出现位置的索引
        · Object remove(int index):删除并返回index所引处的元素
        · Object set(int index, Object element):将index所引处的元素替换成element对象,返回新元素
        · List subList(int fromIndex, int toIndex): 返回[fromIndex, toIndex)所有集合元素组成的子集合

      List判断两个元素相等只需要通过equals()方法比较返回true即可。

    下面程序演示了List集合的这种特性用法:

    import java.util.ArrayList;
    
    class A{
        public boolean equals(Object obj){
            return true;
        }
    }
    
    public class TestList {
        public static void main(String[] args) {
            ArrayList as = new ArrayList();
            as.add(new String("Cocoon"));
            as.add(new String("Fan"));
            as.add(new String("cnblogs"));
            
            System.out.println(as);
            
            //删除元素中的对象,将导致删除第一个元素
            as.remove(new A());
            System.out.println(as);
            
            //再次删除第一个元素
            as.remove(new A());
            System.out.println(as);
        }
    }

    将会看到如下结果:

    [Cocoon, Fan, cnblogs]
    [Fan, cnblogs]
    [cnblogs]

      从上面的结果可以看出,程序试图删除一个A对象,List将会调用该A对象的equals()方法一次与几何元素进行比较,如果该方法返回true则删除该索引对应的元素值。

      当List调用set()方法来改变List集合指定索引处的元素时,指定的索引必须是List的有效索引。

      List还额外提供了一个listiterator()方法,该方法返回一个ListIterator对象,ListIterator继承了Iterator接口,提供了专门操作List的方法:
        · boolean hasPrevious(): 返回该迭代器关联的集合是否还有上一个元素
        · Object previous():返回该迭代器的上一个元素
        · void add(): 在指定位置插入一个元素

    import java.util.ArrayList;
    import java.util.ListIterator;
    
    public class TestList {
        public static void main(String[] args) {
            ArrayList as = new ArrayList();
            as.add(new String("Cocoon"));
            as.add(new String("Fan"));
            as.add(new String("cnblogs"));
            
            //System.out.println(as);
            
            //使用迭代器遍历集合元素
            ListIterator lit = as.listIterator();
            while(lit.hasNext()){
                System.out.println(lit.next());
                lit.add("**分隔符**");
            }
            
            //反向输出
            System.out.println("\n======反向输出======");
            while(lit.hasPrevious()){
                System.out.println(lit.previous());
            }
        }
    }

    输出结果:

    Cocoon
    Fan
    cnblogs
    
    ======反向输出======
    **分隔符**
    cnblogs
    **分隔符**
    Fan
    **分隔符**
    Cocoon
  • 相关阅读:
    数组模拟队列实现
    Vue之模板语法
    初识Vue之helloworld
    二、Lambda表达式
    一、函数式编程
    SpringCloudAlibaba之Nacos
    SpringCloudAlibaba之Sentinel
    spring的随笔2
    spring的小想法1
    关于hibernate的一些看法
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2954923.html
Copyright © 2011-2022 走看看