JAVA学习-Collections类

本文深入探讨Java中的List、Set及Queue等集合类的基本概念与应用技巧,通过具体示例介绍了ArrayList与LinkedList的区别,以及HashSet如何避免重复元素。

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

JAVA学习-Collections类

目录

  • List 列表
  • Set 集合
  • Queue 队列
  • 待更新

List 列表

List是一个继承了Collectiions的接口 ,这个接口的用户可以精确地控制每个元素被插入在列表中的位置,用户可以通过index找到数组中的元素。List允许有相同的元素 ,列表通常允许对e1和e2元素进行配对,比如e1.equals(e2),如果它们允许零元素,它们通常允许多个空元素。有人可能希望实现一个禁止重复的列表,在用户试图插入时抛出运行时异常,这是不可想象的,但是我们希望这种用法是非常少见的。(我觉得这样会花费大量的时间来维护这个列表,如果想没有重复的元素,可以用下面的Set) —— [ 官方文档]

在这里我就经常用到的ArrayList(数组列表)和LinkedList(链表)进行演示说明

ArrayList(数组列表)

在实例化时用:List<> = ArrayList<>();
尖括号中可是是任何类(如String等),如果要用基本数据类型,要填写基本数据类型的封装类,八种基本数据类型和其对应的封装类如下表:

基本数据类型封装类
intInteger
shortShort
floatFloat
doubleDouble
longLong
booleanBoolean
byteByte
charCharacter
代码示例
import java.util.ArrayList;
import java.util.List;

public class ArrayListDisplay {
      public static void main(String[] args)
      {
        List<String> list = new ArrayList<>();
         list.add("name1");    //像数组一样list可以加入,只有一个参数的时候在数组的最开始加入
         list.add(1, "name2");  //在list的index为1处加入,最多只能在这个数组大小的后一个,否则会报错
         list.add("name3");
          list.add(0,"namenew");  //在已有的地方加入会将这个地方原来的元素和后边的元素都向后推
          System.out.println("第一次");
         for(int i =0;i<list.size();i++)
         {
           System.out.print(list.get(i)+" ");  //遍历数组

         }
         list.remove(0);   //可以通过位置来删除元素
         System.out.println("第二次");
         for(int i =0;i<list.size();i++)
         {
           System.out.print(list.get(i)+" ");  //遍历数组
         }
         list.remove("name1");   //可以通过元素和数组中的元素进行对比,找到后删除
         System.out.println("第三次");
         for(int i =0;i<list.size();i++)
         {
           System.out.print(list.get(i)+" ");  //遍历数组
         }
         System.out.println(list.isEmpty()); //如果是空的返回true,否则返回false
         list.set(0, "namechange");
         System.out.println("第四次");
         for(int i =0;i<list.size();i++)
         {
           System.out.print(list.get(i)+" ");  //遍历数组
         }
         System.out.println();
         String[] a = new String[list.size()];  //建立一个和list大小相同的同类型数组
         String[] array =  list.toArray(a);    //用a来承接这个数组,并返回a
         for(int i = 0;i<array.length;i++)
         {
           System.out.print(array[i]+" ");
         }
      }
}

程序运行结果

LinkedList(链表)

如果不使用LinkedList的特有方法,用List<>() list= new LinkedList<>();实例化
如果要使用它的特有方法使用LinkedList<>() list = new LinkedList<>();实例化

示例代码
import java.util.LinkedList;

public class LinkedListDisplay {
  public static void main(String[] args) {
    LinkedList<Integer> list= new LinkedList<>();  //用LinkedList来承接新建的LinkedList类可以使用这个类独有的方法
        list.add(1);
        list.add(2);
        list.add(3);
        for(Integer i :list)
        {
          System.out.print(i+"  ");
        }
        System.out.println();
        list.addFirst(0);   //这个方法会在链表的最开始处插入元素
        for(Integer i :list)
        {
          System.out.print(i+"  ");
        }
        System.out.println();
        list.addLast(4);//这个方法会在链表的最末端处插入元素
        for(Integer i :list)
        {
          System.out.print(i+"  ");
        }
        System.out.println();
        System.out.println(list.getFirst()); //得到链表的第一个元素
        System.out.println(list.getLast());   //得到链表最后一个元素
        System.out.println(list.contains(1));   //这个链表是否包含元素1,如果是,返回true,否则返回false
        list.push(5); //向链表中push一个元素,push到最前的我位置
        for(Integer i :list)
        {
          System.out.print(i+"  ");
        }
        System.out.println(); 

       int a =  list.pop();  //pop(弹出)这个链表的第一个元素
       System.out.println("弹出的元素:"+a); 
       for(Integer i :list)
       {
         System.out.print(i+"  ");
       }
  }
}

程序运行结果

Set集合

一个不包含重复元素的集合。更正式地说,set不包含e1和e2元素,比如e1=(e2),最多只有一个空元素。正如其名称所暗示的,这个接口模拟了数学集的抽象。Set接口附加了额外的规定,超出了从收集接口继承的条款,在所有构造函数的契约上,以及add、equals和hashCode方法的契约上。为了方便起见,还在这里列出了其他继承方法的声明。(伴随这些声明的规范已经被定制到Set接口中,但是它们不包含任何额外的规定。)对于构造函数的附加规定,毫不奇怪,所有的构造函数必须创建一个不包含重复元素(如上所述)的集合。 —— [ 官方文档]

在实例化时使用Set<> set = new HashSet<>();

示例代码

“`
package set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetDisplay {
public static void main(String[] args )
{
Set set = new HashSet<>();
set.add(“Trump”);
set.add(“Trump”);
Iterator it = set.iterator();
while(it.hasNext())
{
String s = it.next();
System.out.println(s);
}

}
}

“`set代码演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值