二、单例集合框架各个接口与类的层次结构

本文详细介绍了Java集合框架中的单列集合,包括Collection接口、List集合体系(ArrayList、LinkedList、Vector)和Set集合体系(HashSet、LinkedHashSet)。重点讲解了ArrayList的增删改查操作,LinkedList的特有方法,以及HashSet的无序不重复特性。通过实例代码展示了各种集合的使用方法和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、单例集合框架各个接口与类的层次结构

  • 单列集合体系结构:
    在这里插入图片描述

在这里插入图片描述


1、Collection 接口

       Collection 接口是所有单列集合的父接口,因此在单列集合中定义的List和set通用的一些方法,这些方法可以操作所有的单列集合。方法如下:
  • Collection 集合常用方法
    • public boolean add(E e); 向集合中添加元素

    • public boolean remove(E e); 删除集合中的某个元素

    • boolean removeAll(Collection c):移除一个集合的元素

    • public void clear(); 清空集合中所有的元素

    • public boolean contains(); 判断集合中是否含有xxx元素

    • public boolean isEmpty(); 判断集合是否为空

    • public int size(); 计算集合的长度

    • public Object[] toArray(); 将集合转成一个数组

Demo代码示例:

  public class Demo_Collection {

    public static void main(String[] args) {

        Collection coll = new ArrayList();

        /*
        1:添加功能
            boolean add(Object obj):添加一个元素
            boolean addAll(Collection c):添加一个集合的元素
            */
        coll.add(2);
        coll.add("djf");
        coll.add(coll);
        coll.add(34);
        coll.add(33);

        /*
       // 2:删除功能
            void clear():移除所有元素
            boolean remove(Object o):移除一个元素
            boolean removeAll(Collection c):移除一个集合的元素
        */
        //coll.clear();//这里给注释了,不然集合中数据清空
        coll.remove(0);
        coll.removeAll(coll);

        System.out.println(coll.isEmpty());//判断集合是否为空
        System.out.println("=================================");
        System.out.println(coll.toString());//转换成字符串
        System.out.println("=================================");
        System.out.println(coll.iterator());//获取功能
        System.out.println("=================================");
        System.out.println(coll.size());//元素的个数
        System.out.println("=================================");
        System.out.println(coll.contains(coll));//判断集合中是否包含指定的集合元素
        System.out.println("=================================");

        Object[] obj = coll.toArray();//把集合转换为数组

        System.out.print("{");
        for (int i = 0; i < obj.length; i++) {

            if(i == obj.length -1){
                System.out.print(obj[i]);
            }else {
                System.out.print(obj[i]+",");
            }
        }
        System.out.println("}");
        System.out.println("=================================");
    }
}

运行结果:
在这里插入图片描述



2、List 集合体系

       List集合:在使用该集合添加元素时,集合中的元素都是有序的,并且元素的内容是可以重复的。
       每个元素都有索引,可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
        注:实际开发中常用的是 ArrayList 集合。

  • List 接口中的成员方法

    • 添加功能

      • void add(int index,Object element):在指定位置添加元素
    • 获取功能

      • Object get(int index):获取指定位置的元素
    • 删除功能

      • Object remove(int index):根据索引删除元素,返回被删除的元素
    • 修改功能

      • Object set(int index,Object element):根据索引修改元素,返回被修饰的元素

  • List 接口有三个子类对象:
    • ArrayList 集合—— 添加元素,是有序,可重复,有索引的。(重点掌握)

    • LinkedList 集合—— 添加元素,是有序,可重复,有索引的。(次之)

    • Vector 集合—— 查询快,增删慢;运行效率慢、线程安全。 (了解)


1、ArrayList 类 (重点掌握)

  • ArrayList 集合 :
    • 底层数据结构是数组,查询快,增删慢。
    • 线程不安全,效率高。

Demo代码示例:

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

public class Demo_ArrayList  {

    public static void main(String[] args) {

        List list = new ArrayList();

       List list = new ArrayList();

        list.add(111);//添加集合中的元素
        list.add(1,222);//在指定位置添加元素
        list.add(2,"ef");
        list.add(list);
        list.add(333);
        list.add(333);
        list.add(333);
        //JDK5之后便开始自行封装
        // 等同于:list.add(Integer.valueOf(333));
        System.out.println("集合中的元素有:"+list);

        System.out.println("=======================");

        list.remove(4);//删除指定下标的元素
        System.out.println("删除集合中下标为4的元素:"+list);

        System.out.println("=======================");

        System.out.println("获取集合中下标为2的元素:"+list.get(2));//获取指定位置的元素

        System.out.println("=======================");

        list.set(0,100);//修改指定下标的元素
        System.out.println("将下标为0的元素进行修改:"+list);

    }
}

运行结果:
在这里插入图片描述


2、LinkedList 类

  • LinkedList 类 的成员方法

    • 添加功能

      • public void addFirst(E e); 将指定的元素插到列表开头。
      • public void addLat(E e); 将指定的元素插到列表结尾。 此方法等效于add()方法
      • public void push(E e); 将元素推入此列表所示的堆栈。 此方法等效于addFirst()方法

    • 获取功能

      • public E getFirst(); 返回此列表的第一个元素
      • public E getLast(); 返回此列表的最后一个元素

    • 删除功能

      • public E removeFirst(); 移除并返回此列表的第一个元素
      • public E removeLast(); 移除并返回此列表的最后一个元素

    • 修改功能

      • Object set(int index,Object element):根据索引修改元素,返回被修饰的元素

    • 判断功能

      • public boolean isEmpty(); 如果列表为空 返回true

Demo代码示例:

import java.util.LinkedList;

public class sss {
    
        public static void main(String[] args) {
            show01();
            show02();
            show03();
        }
   
        public static void show01(){
            //        注:LinkedList特有的方法不能使用多态!
            //        List<String> list = new LinkedList<>(); 是不对的
            LinkedList<String>list = new LinkedList<>();

            // add()添加元素
            list.add("a");
            list.add("b");
            list.add("c");
            System.out.println(list);//[a, b, c]
 
            //addFirst(E e); 将指定的元素插到列表开头。
            list.addFirst("hhh");
            //public void push(E e); 将元素推入此列表所示的堆栈。 等效于addFirst()
            list.push("hhh");
            System.out.println(list);
 
            //addLast(E e); 将指定的元素插到列表结尾。 等效于add()
            list.addLast("com");
            System.out.println(list);
 
        }
         
        public static void show02(){
            LinkedList<String>list = new LinkedList<>();
            // add()添加元素
            list.add("a");
            list.add("b");
            list.add("c");
            //        list.clear(); // 清空集合中所有元素
            if(! list.isEmpty()){
                //  public E getFrist(); 返回此列表的第一个元素
                System.out.println(list.getFirst());//a
                // public E getLast(); 返回此列表的最后一个元素
                System.out.println(list.getLast());//c
            }
        }
        /*
        public E removeFrist(); 移除并返回此列表的第一个元素
        public E removeLast(); 移除并返回此列表的最后一个元素
        public E pop(E e); 入此列表所示的堆栈中弹出一个元素。
         */
        public static void show03(){
            LinkedList<String>list = new LinkedList<>();
            // add()添加元素
            list.add("a");
            list.add("b");
            list.add("c");
            System.out.println(list.pop());
            //public E pop(E e); 入此列表所示的堆栈中弹出一个元素。 等效于 removefirst()
            //System.out.println(list.pop());   
            System.out.println(list.removeFirst());//a
            System.out.println(list.removeLast());//c
            System.out.println(list);//[b]
        }
    }

运行结果:
在这里插入图片描述

注:使用 LinkedList 集合特有的方法,不能使用多态。


3、Vector 类(了解一下即可)

  • Vector 集合:
    • 底层数据结构是数组,查询快,增删慢。
    • 线程安全,效率低。

Vector 类独有的成员方法:

  • 添加功能
    • public void addElement(Object obj)
  • 获取功能
    • public Object elementAt(int index)
    • public Enumeration elements()

Demon 代码示例:

public class VectorDemo {
    public static void main(String[] args) {
          // 创建集合对象
            Vector v = new Vector();

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

            System.out.println(v);

            System.out.println("=========================================");

            System.out.println(v.elements());//获取对象

            System.out.println("=========================================");

            System.out.println(v.elementAt(2));
    }
}

在这里插入图片描述



3、Set 集合体系

       Set 集合的特点:向集合中添加的元素,是无序的,不可重复的,无索引的(索引的操作不能用)。

  • Set 接口有三个子类对象:
    • HashSet 集合—— 添加的元素,是无序的,不重复的,无索引的。(重点掌握)

    • LinkedHashSet 集合—— 添加的元素,是有序的,不重复的,无索引的。(次之)

    • TreeSet 集合—— 不重复,无索引,按照大小默认升序排序!!(可排序集合)(废弃)


1、HashSet 类 (重点掌握)

       Set 集合的使用方式和 List 集合一样,只有数据存储的形式不一样。

Demo代码示例:

public class HashSetDemo {
    public static void main(String[] args) {
  // 创建集合对象
            HashSet<String> hs = new HashSet<String>();

            // 创建并添加元素
            hs.add("hello");
            hs.add("world");
            hs.add("java");
            hs.add("world");
            System.out.println(hs);
      }
}

运行结果:
在这里插入图片描述
查看结果可知,集合中的元素并没有按照存储顺序来存储,并且相同的数据也没有成功。



2、LinkedHashSet 类

  • 概述
    • 底层数据结构由哈希表和链表组成
    • 由链表保证元素有序(存储和取出是一致)
    • 由哈希表保证元素唯一性

Demo代码示例:

import java.util.LinkedHashSet;

public class HashSetDemo {
    public static void main(String[] args) {
        // 创建集合对象
        LinkedHashSet<String> hs = new LinkedHashSet<String>();
        // 创建并添加元素
        hs.add("hello");
        hs.add("world1");
        hs.add("java1");
        hs.add("world2");
        hs.add("world");
        hs.add("java");
        hs.add("world");

        System.out.println(hs);
    }
}

运行结果:
在这里插入图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值