Bootstrap

Java基础Day-Fourteen

常见集合与应用

  • Java集合类是一种特别有用的工具类,可用于存储数量不等的对象

  • Java集合包含List、Set、Map以及JDK1.5推出的Queue四种体系

  • Java的集合类主要由两个接口派生而出:Collection和Map

  • 四种存储结构

    • List代表有序、可重复集合

    • Queue代表队列特性

    • Set代表无序、不可重复集合

    • Map代表存储映射关系的集合

List集合体系及应用

  • List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引

  • List集合允许使用重复元素,通过索引访问指定位置的元素

  • List集合默认按元素的添加顺序设置元素的索引

ArrayList
  • 特点:

    • ArrayList基于数组实现的List类,是Java数组的有效替代品

    • ArrayList会自动对容量进行扩容,多数情况下无须指定最大长度

    • ArrayList的数据在内存中是连续紧密存储的,基于数据访问速度快

  • 使用方法:

    //集合存储在java.util包下
    import java.util.ArrayList;
    ...
    //实例化ArrayList
    ArrayList<String> bookList=new ArrayList<String>();
    //新增元素,尾部追加
    bookList.add("三国演义");
    //返回第一个元素,索引从0开始
    String bookName1=bookList.get(0);
            ArrayList<String> bookList=new ArrayList<String>();
            bookList.add("三国演义");
            bookList.add("水浒传");
            bookList.add("三国演义");
            System.out.println(bookList);//[三国演义, 水浒传, 三国演义]
            String bookName1=bookList.get(1);
            System.out.println(bookName1);//水浒传
    ​
            bookList.add(1,"红楼梦");
            System.out.println(bookList);//[三国演义, 红楼梦, 水浒传, 三国演义]
    ​
            boolean result1=bookList.add("西游记");
            System.out.println("列表是否发生变化:"+result1);//列表是否发生变化:true
    ​
            String before=bookList.set(4,"西游记后传");
            System.out.println(before);//西游记
            System.out.println(bookList);//[三国演义, 红楼梦, 水浒传, 三国演义, 西游记后传]
    ​
            boolean result2=bookList.remove("西游记后传");
            System.out.println(result2);//true
            System.out.println(bookList);//[三国演义, 红楼梦, 水浒传, 三国演义]
    ​
            String item=bookList.remove(0);
            System.out.println(item);//三国演义
            System.out.println(bookList);//[红楼梦, 水浒传, 三国演义]
    ​
            int count=bookList.size();
            System.out.println(count);//3
            bookList.set(bookList.size() - 1, "测试数据");
            System.out.println(bookList);//[红楼梦, 水浒传, 测试数据]
            bookList.remove(bookList.size() - 1);
            System.out.println(bookList);//[红楼梦, 水浒传]
LinkedList特征与方法应用
  • LinkedList同时实现了List与Deque两个接口

  • LinkedList在保障有序、允许重复的前提下,也可以作为队列在队首、队尾快速追加数据

  • LinkedList的数据在内存中是分散存储的,基于链表,拥有良好的数据插入速度,但数据访问速度低于ArrayList

        LinkedList<String> boolList = new LinkedList<String>();
        boolList.add("三国演义");
        boolList.add(0,"水浒传");
        boolList.add("西游记");
        boolList.add("红楼梦");
        System.out.println(boolList);//[水浒传, 三国演义, 西游记, 红楼梦]
        boolList.addFirst("蒸汽革命");
        boolList.addLast("黄金时代");
        System.out.println(boolList);//[蒸汽革命, 水浒传, 三国演义, 西游记, 红楼梦, 黄金时代]
ArrayList与LinkedList存储结构
  • ArrayList:访问速度快,操作不便

    01234
    ABCDE
  • LinkedList:双向指针,增删比较方便

三种集合的遍历方式
  • for循环遍历

  • forEach方法遍历

  • Iteration迭代器遍历

        //方法一:for循环遍历
        for (String book:booklist){
            System.out.println(book);
        }
        //方法二:forEach方法遍历
        booklist.forEach(book->{
            System.out.println(book);
        });
        //方法三:Iteration迭代器遍历
        Iterator<String> itr=booklist.iterator();
        while(itr.hasNext()){
            String book=itr.next();//提取出下一个元素,同时将指针向后移动
            System.out.println(book);
        }

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;