18:集合-----List集合

一:List接口介绍

java.util.List接口继承Collection接口,是单列集合的一个重要分支,习惯上将实现了List接口的对象称为List集合,List集合允许出现重复的元素,所有的元素是以一种线下方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。List集合一个特点:元素有序,即元素的存入顺序和取出顺序一致。
List接口的特点:
1.它是一个元素存取有序的集合。例如,存元素的顺序是11,22,33.那么集合中,元素的存储就是按照11,22,33的顺序完成的。
2:它是一个带有索引的集合,通过索引就可以精确操作集合中的元素(与数组的索引一个道理).
3.集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
tips:List接口的子类java.util.ArrayList类,此类的方法都是来自List定义。

package cn.itcast.day10.day6;

import com.sun.org.apache.xpath.internal.SourceTree;

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

/*
    java.util.List接口 extends  Collection接口
    List接口的特点:
        1:有序的集合:存储元素和取出元素的顺序是一致的(存储123,取出123)
        2:有索引,包含了一些带索引的方法
        3:允许存储重复的元素。
    List接口中带索引的方法(特有)
        public void add(int index,E element):将指定的元素,添加到该集合中的指定位置上。
        public E get(int index);返回集合中指定的元素
        public E remove(int index);移除列表中指定位置的元素,返回被移除的元素。
        public E set(int index,E element);用指定元素替换集合中指定位置的元素,返回更新前的元素。
        //注意:操作索引的时候,一定防止索引越界异常。
*/
public class Demo01List {
    public static void main(String[] args) {
        //创建一个List集合对象,多态
        List<String> list =new ArrayList<>();
        //使用add方法往集合中添加元素。
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");
        System.out.println(list);//[a, b, c, d, a]不是地址,说明重写toString

       // public void add(int index,E element):将指定的元素,添加到该集合中的指定位置上。
        //在c和d之间添加one
        list.add(3,"one");//[a, b, c, one, d, a]
        System.out.println(list);

        //public E remove(int index);移除列表中指定位置的元素,返回被移除的元素。
        //移除元素
        String removeE =list.remove(2);
        System.out.println("被移除的元素"+removeE);
        System.out.println(list);

        //public E set(int index,E element);用指定元素替换集合中指定位置的元素,返回更新前的元素。
        //把最后一个a替换成4
        String setE=list.set(4,"4");
        System.out.println("被替换的元素"+setE);
        System.out.println(list);

        //List集合遍历有3种方式
        for (int i= 0;i<list.size();i++){
            String s=list.get(i);
            System.out.println(s);
        }
        System.out.println("====================");
        //使用迭代器
        Iterator<String> iterator =list.iterator();
        while (iterator.hasNext()){
            String s= iterator.next();
            System.out.println(s);
        }
        System.out.println("===============");
        //使用增强for
        for(String s:list){
            System.out.println(s);
        }
    }
}

在这里插入图片描述

二:List的子类-----ArrayList集合

java.util.ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快。

三:List的子类-----LinkedList集合

java.util.LinkedList集合数据存储的结构是双向链表结构。方便元素的添加,删除的集合。

package cn.itcast.day10.day6;

import java.util.LinkedList;

/*
    java.util.LinkList集合 implements List接口
    特点:
        1:底层是一个链表结构:查询慢,增删快。
        2:里面包含了大量操作首尾元素的方法。
        注意:使用LinkedList集合特有的方法,不能使用多态。

        public void addFirst(E e);//将指定的元素插入到此列表的开头。
        public void addLast(E e);将指定元素添加到此列表的结尾。
        public E getFirst();返回列表的第一个元素。
        public E getLast():返回列表的最后一个元素。
        public E removeFirst();移除并返回此列表的第一个元素。
        public E removeLast();移除并返回列表的最后一个元素。
        public E Pop();从列表所表示的堆栈处弹出一个元素。
        public boolean isEmpty();//如果列表不包含元素,则返回true
*/
public class Demo02LinkedList {
    public static void main(String[] args) {
        show3();
    }
    /*
    *  public E removeFirst();移除并返回此列表的第一个元素。
        public E removeLast();移除并返回列表的最后一个元素。
        public E Pop();从列表所表示的堆栈处弹出一个元素。
    * */
    private static void show3(){
        //创建LinkedList集合对象。
        LinkedList<String> linked =new LinkedList<>();
        //使用add方法往集合中添加元素。
        linked.add("a");
        linked.add("b");
        linked.add("c");
        String first =linked.removeFirst();
        System.out.println("被移除的第一个元素"+first);
        String last =linked.removeLast();
        System.out.println("被移除的最后一个元素"+last);
        System.out.println(linked);
    }
    /*
         public E getFirst();返回列表的第一个元素。
        public E getLast():返回列表的最后一个元素。
    */
    private static void show2(){
        //创建LinkedList集合对象。
        LinkedList<String> linked =new LinkedList<>();
        //使用add方法往集合中添加元素。
        linked.add("a");
        linked.add("b");
        linked.add("c");
        if (!linked.isEmpty()){
            linked.clear();//清空集合中的元素,在获取集合中的元素抛出NoSuchElementException
            String first =linked.getFirst();
            System.out.println(first);
            String last =linked.getLast();
            System.out.println(last);
        }
    }
/*
*    public void addFirst(E e);//将指定的元素插入到此列表的开头。
        public void addLast(E e);将指定元素添加到此列表的结尾。
* */
    private static void show01(){
        //创建LinkedList集合对象。
        LinkedList<String> linked =new LinkedList<>();
        //使用add方法往集合中添加元素。
        linked.add("a");
        linked.add("b");
        linked.add("c");
        System.out.println(linked);//[a, b, c]

        // public void addFirst(E e);//将指定的元素插入到此列表的开头。
        linked.push("www");
        System.out.println(linked);//[www, a, b, c]

        // public void addLast(E e);将指定元素添加到此列表的结尾。
        linked.addLast("com");
        System.out.println(linked);//[www, a, b, c, com]
    }

}

在这里插入图片描述

四:List的子类-----Vector集合

与collection实现不同的,vector集合是同步的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值