List的子类

概述

List常见子类有ArrayListVectorLinkedList
List的子类_第1张图片

特有功能

  • 1、ArrayList 没有特有功能
  • 2、Vector特有功能
    • 添加
      • public void addElement(E obj)
    • 获取
      • public E elementAt(int index)   按下标获取元素,相当于get()
      • public Enumeration elements()   获取所有,相当于iterator()
  • 3、LinkedList特有功能
    • 添加
      • addFirst()
      • addLast()
    • 删除
      • removeFirst()
      • removeLast()
    • 获取
      • getFirst()
      • getLast()
public class ListDemo2 {
    public static void main(String[] args) {
        // 创建ArrayList集合对象
        ArrayList array = new ArrayList();

        // 添加元素
        array.add(new Student("武松", 30));
        array.add(new Student("鲁智深", 40));

        // 遍历
        Iterator it = array.iterator();
        while (it.hasNext()) {
            Student s = (Student) it.next();
            System.out.println(s.getName() + "---" + s.getAge());
        }
        System.out.println("------------------");

        // 创建Vector集合对象
        Vector v = new Vector();

        // 添加功能
        v.addElement("hello");
        v.addElement("world");

        // 遍历
        for (int x = 0; x < v.size(); x++) {
            String s = (String) v.elementAt(x);
            System.out.println(s);
        }

        Enumeration en = v.elements(); // 返回的是实现类的对象
        while (en.hasMoreElements()) {
            String s = (String) en.nextElement();
            System.out.println(s);
        }
        System.out.println("------------------");

        // 创建LinkedList集合对象
        LinkedList link = new LinkedList();

        // 添加元素
        link.add("hello");
        link.add("world");

        // public void addFirst(Object e)
        link.addFirst("javaee");
        // public void addLast(Object e)
        link.addLast("android");
        System.out.println("link:" + link);

        // public Object getFirst()
        System.out.println("getFirst:" + link.getFirst());
        // public Obejct getLast()
        System.out.println("getLast:" + link.getLast());

        // public Object removeFirst()
        System.out.println("removeFirst:" + link.removeFirst());
        // public Object removeLast()
        System.out.println("removeLast:" + link.removeLast());

        // 输出对象名
        System.out.println("link:" + link);
    }
}

输出:
武松---30
鲁智深---40
------------------
hello
world
hello
world
------------------
link:[javaee, hello, world, android]
getFirst:javaee
getLast:android
removeFirst:javaee
removeLast:android
link:[hello, world]

实际场景

需求1:ArrayList去除集合中字符串的重复值。

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

        // 添加多个字符串元素(包含内容相同的)
        array.add("hello");
        array.add("world");
        array.add("java");
        array.add("world");
        array.add("java");
        array.add("world");
        array.add("world");
        array.add("world");
        array.add("java");
        array.add("world");
        System.out.println("原始集合"+ array);

        // 创建新集合
        ArrayList newArray = new ArrayList();

        // 遍历旧集合,获取得到每一个元素
        Iterator it = array.iterator();
        while (it.hasNext()) {
            String s = (String) it.next();

            // 拿这个元素到新集合去找,看有没有
            if (!newArray.contains(s)) {
                newArray.add(s);
            }
        }

        System.out.println("新集合"+ newArray);
    }
}

输出:
原始集合[hello, world, java, world, java, world, world, world, java, world]
新集合[hello, world, java]

思路:1、遍历旧集合,获取得到每一个元素,拿这个元素到新集合去找,看有没有。2、有,忽略;没有,就添加到新集合。

需求2:1、ArrayList去除集合中字符串的重复值。2、但是不能创建新的集合,就在以前的集合上做。

思路:由选择排序思想引入,拿0索引的依次和后面的比较,有就把后的干掉。同理,依次拿1索引…

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

        // 添加多个字符串元素(包含内容相同的)
        array.add("hello");
        array.add("world");
        array.add("java");
        array.add("world");
        array.add("java");
        array.add("world");
        array.add("world");
        array.add("world");
        array.add("java");
        array.add("world");
        System.out.println("修改前集合"+ array);

        for (int x = 0; x < array.size() - 1; x++) {
            for (int y = x + 1; y < array.size(); y++) {
                if (array.get(x).equals(array.get(y))) {
                    array.remove(y);
                    y--;
                }
            }
        }
        System.out.println("修改后集合"+ array);
    }
}

输出:
修改前集合[hello, world, java, world, java, world, world, world, java, world]
修改后集合[hello, world, java]

注意:remove()执行后,后面的元素都会依次补充上来。 故需要y–

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

        // 添加多个字符串元素(包含内容相同的)
        array.add("hello");
        array.add("world");
        array.add("java");
        array.add("spring");

        for (int i=0; i < array.size(); i++){
            System.out.println("下标[" + i + "]=" + array.get(i));
        }
        System.out.println("---------------------");

        array.remove(1);
        for (int i=0; i < array.size(); i++){
            System.out.println("下标[" + i + "]=" + array.get(i));
        }
    }
}

输出:
下标[0]=hello
下标[1]=world
下标[2]=java
下标[3]=spring
---------------------
下标[0]=hello
下标[1]=java
下标[2]=spring

删除下标 1后,后续元素下标均减一

https://blog.csdn.net/basycia/article/details/51840713

你可能感兴趣的:(Java,java)