Java——集合

文章目录

1、集合框架的简述

  • Java集合框架提供了一套性能优良、使用方便的接口和类,它们为于java.util包中。存放在集合中的数据,被称为元素(element)。
    Java——集合
  • 集合框架:
    • Collection接口存储一组不唯一,无序的对象;
    • List接口存储一组不唯一,有序(索引顺序)的对象;
    • Set接口存储一组唯一,无序的对象;
    • Map接口存储一组键值对象,提供key到value的映射;
      • key 唯一 无序
      • value 不唯一 无序

2、List集合

List集合的主要实现类有ArrayList和linkedList,分别是数据结构中顺序表和链表的实现。另外还包括栈和队列的实现类:Deque和Queue。

  • List
    • 特点:有序,不唯一
  • ArrayList
    • 在内存中分配连续的空间,实现了长度可变的数组;
    • 有点:遍历元素和随机访问效率比较高;
    • 缺点:添加和删除需大量移动元素效率低,按照内容查询效率低;
  • LinkedList
    • 采用双向链表存储方式;
    • 缺点:遍历和随机访问元素效率低下;
    • 优点:插入、删除元素效率比较高(前提要低效率查询)

2.1、ArrayList实现类

代码演示

package Collection;

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

/*
    使用ArrayList存储多个学生分数(不唯一,索引有序)
    数组中可以放基本类型,也可以放引用类型
    集合中只能放引用类型,不能放基本类型
 */
public class collection01 {
    public static void main(String[] args) {
        //创建一个集合对象
        List l1=new ArrayList();
        //添加元素
        l1.add(60);     //在末尾添加
        l1.add(70);
        l1.add(80);
        l1.add(1,50);   //指定的索引添加元素
        //获取指定索引的元素
        int element1=(int)l1.get(0);
        //遍历元素
        System.out.println(l1.toString());
        //for循环
        for (int i = 0; i < l1.size(); i++) {
            int element2=(int) l1.get(i);
            System.out.print(element2+",");
        }
        System.out.println();
        //for——each循环
        for(Object o:l1){
            System.out.print(o+",");
        }
        System.out.println();
        //Iterator迭代器
        Iterator i1= l1.iterator() ;
        while(i1.hasNext()){    //hasNext方法判断是否有下一个元素
            int element3=(int) i1.next();   //next方法取下一个元素的值
            System.out.print(element3+",");
        }
    }
}

运行结果
Java——集合

2.2、LinkedList实现了类

代码演示

package Collection;

import java.util.Iterator;
import java.util.LinkedList;

public class collection02 {
    public static void main(String[] args) {
        //创建一个集合对象
        LinkedList l1=new LinkedList();     //这里没有使用多态,因为LinkedList有自己的方法
        //添加元素
        l1.add(60);     //在末尾添加
        l1.add(70);
        l1.add(80);
        l1.add(1,50);   //指定的索引添加元素
        //获取指定索引的元素
        int element1=(int)l1.get(0);
        //遍历元素
        System.out.println(l1.toString());
        //for循环
        for (int i = 0; i < l1.size(); i++) {
            int element2=(int) l1.get(i);
            System.out.print(element2+",");
        }
        System.out.println();
        //for——each循环
        for(Object o:l1){
            System.out.print(o+",");
        }
        System.out.println();
        //Iterator迭代器
        Iterator i1= l1.iterator() ;
        while(i1.hasNext()){    //hasNext方法判断是否有下一个元素
            int element3=(int) i1.next();   //next方法取下一个元素的值
            System.out.print(element3+",");
        }
    }
}

运行结果
Java——集合

3、Set集合

  • Set
    • 特点: 无序,唯一
  • HashSet
    • 采用Hashtable哈希表存储结构;
    • 优点:添加速度快,查询速度快,删除速度快;
    • 缺点:无序;
  • LinkedHashSet
    • 采用哈希表存储结构,同时使用链表维护次序;
    • 有序(添加顺序) ;
  • TreeSet
    • 采用二叉树的存储结构;
    • 优点:有序,查询熟读比List快(按照内容查询);
    • 缺点:查询熟读没有HashSet快;

4、Map集合框架

  • Map
    • 特点: 存储的键值对映射关系,根据key可以找到value
  • HashSet
    • 采用Hashtable哈希表存储结构;
    • 优点:添加速度快,查询速度快,删除速度快;
    • 缺点:key无序;
  • LinkedHashMap
    • 采用哈希表存储结构,同时使用链表维护次序;
    • 有序(添加顺序) ;
  • TreeMap
    • 采用二叉树的存储结构;
    • 优点:有序,查询熟读比List快(按照内容查询);
    • 缺点:查询熟读没有HashSet快;

5、jdk1.8中文api

上一篇:常用内置函数,可迭代对象


下一篇:剑指 Offer 25. 合并两个排序的链表