拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java基础_集合_List与Set集合(笔记)

Java基础_集合_List与Set集合(笔记)

白鹭 - 2022-03-24 2099 0 0

文章目录

    • List
      • List集合概述
      • Listlterator
        • listerator:串列迭代器
        • listerator常用方法:
      • Arraylist与Linkedlist
        • 两者的异同
        • ArrayList
        • LinkedList集合的特有功能
    • Set
      • Set集合特点
      • 哈希值
      • HashSet集合特点
      • LinkedHashSet集合
      • TreeSet集合

List

List集合概述

  • 有序集合(也称为序列),用户可以精确控制串列中的每个元素的每一个位置,用户可以通过索引访问并搜索串列中的元素
  • 与Set集合不同,串列通常允许有重复的元素

特点

  • 有序:存盘和取出的顺序一致
  • 可重复性:存盘的元素可以重复

特有方法

  • void add(int index,E element);在此集合中指定位置插入指定的元素
  • E remove(int index);洗掉指定索引的元素,回传被洗掉的元素
  • E set(int index,Eelement);修改指定索引的元素,回传被修改的元素
  • E get(int index);回传指定索引的元素

Listlterator

listerator:串列迭代器

  • 通过List集合的listIterator()方法得到,所以说它是list集合的迭代器
  • 用于允许程序员沿着任意方向遍历串列迭代器,在迭代的期间修改串列,病获得串列中迭代器的当前位置
        Iterator<Student> it = list.iterator();
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s.getName() + "," + s.getAge());
        }

listerator常用方法:

  • E next():回传迭代中的下一个元素
  • boolean hasNext();如果迭代具有更多元素则回传ture
  • E previous();回传串列中的上一个元素
  • boolean hasPrevious();如果此串列迭代器在相反的方向遍历串列时具有更多元素则回传ture
  • void add(E e);将特定的元素插入到串列中

Arraylist与Linkedlist

两者的异同

同:Arraylist与Linkedlist都是List的子类具有List的性质
异:

  • ArrayList:底层资料结构是阵列,具有查询快,增删慢的性质
  • LinkedList:底层资料结构是链表,具有查询慢,增删快的性质

ArrayList

作用:

  • ArrayList是基于Object[]实作的,所以该只能装参考资料型别,基本资料型别要想装进集合,需要将基本资料型别进行类的包装,
  • 包装类中有将String型别转换为对应的基本资料型别的方法,

特点:

  • 有序的:按照添加的顺序
  • 不唯一:同一个元素可以装多次

构造方法

  • ArrayList list = new ArrayList(int 阵列空间大小);
  • ArrayList list = new ArrayList();//阵列默认开辟10块空间

LinkedList集合的特有功能

  • public void addFirst(E e);在开头插入指定元素
  • public void addLast(E e);将指定的元素追加到此串列的末尾
  • public E getFirst();回传串列中的第一个元素
  • public E getLast();回传此串列中的最后一个元素
  • public E removeFirst();从此串列中洗掉并回传第一个元素
  • public E removeFirst();从串列中洗掉并回传最后一个元素

Set

Set集合特点

  • 不包含重复元素的集合
  • 没有带索引的方法,所以不能使用普通的for回圈遍历

哈希值

  • 哈希值:是JDK根据物件的地址或者字符串数字算出来的int型别的数值
    获取物件的哈希值:回传物件的哈希码值
    public int hashCode();

物件的哈希值特点:

  • 同一个物件多次呼叫hashCode()方法回传的哈希值是相同的
  • 默认情况下,不同物件的哈希值不同,而重写hashCode方法,可以实作让不同物件的哈希值相同

HashSet集合特点

  • 底层资料结构是哈希表
  • 对集合的迭代顺序不做任何保证,即存盘和取出的元素一致
  • 没有带索引的方法,所以不能使用普通的for回圈遍历
  • 由于是Set集合分,所以是不包括重复元素的集合
public class test02 {
    public static void main(String[] args) {
        HashSet<String> hs= new HashSet<String>();

        hs.add("李淳罡");
        hs.add("剑九黄");
        hs.add("王仙芝");
        hs.add("李淳罡");

        for(String s:hs){

            System.out.println(s);
        }
    }
}

在这里插入图片描述
添加元素的程序:
在这里插入图片描述注:为确保唯一性,需重写hashCode()和heequals()方法

LinkedHashSet集合

概括:

  • 继承hashSet类并实作Set界面
  • 底层资料结构是哈希表和链表

特点:

  • 哈希表和链表实作的Set界面,具有可预测的迭代次序
  • 由链表保证元素有序,即元素的储存和取出顺序是一致的
  • 由哈希表保证元素唯一,即没有重复的元素
    public static void main(String[] args) {
        //创建链表
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        //添加资料
        linkedHashSet.add("hello");
        linkedHashSet.add("java");
        linkedHashSet.add("world");
        linkedHashSet.add("java");//重复资料不能存盘
        //加强for回圈遍历
        for (String s : linkedHashSet) {
            System.out.println(s);
        }
    }

在这里插入图片描述

TreeSet集合

概述:

  • 位于java.util包下,使用时需要导包
  • 间接实作了Set方法

特点:

  • 元素有序,是按照一定的规则进行排序,并非是指存盘和取出的顺序,具体方法由构造方法决定
  • TreeSet();根据其元素的自然排序进行排序
  • TreeSet(Comparator comparator);根据指定比较器进行排序
  • 没有索引的方法,所以不能使用普通for回圈
  • 由于实作了Set集合,所以不包含重复元素的集合

代码演示:

    public static void main(String[] args) {
        TreeSet<Integer> treeSet=new TreeSet<>();
        treeSet.add(30);
        treeSet.add(20);
        treeSet.add(40);
        treeSet.add(50);
        
        treeSet.add(20);

        for(Integer i:treeSet){
            System.out.println(i);
        }
    }

在这里插入图片描述

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *