Java学习笔记14

List集合

java.util.List接口 extends Collection接口

特点:

  1. 有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)

  2. 有索引,包含了一些带索引的方法

  3. 允许存储重复的元素

List接口中带索引的方法(特有)

  • public void add(int index, E element) :将指定的元素,添加到该集合中的指定位置上

  • public E get(int index) :返回集合中指定位置的元素

  • public E remove(int index) :移除列表中指定位置的元素,返回的是被移除的元素

  • public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素

注意:

操作索引的时候,一定要防止索引越界异常

IndexOutOfBoundsException:索引越界异常,集合会报

ArrayIndexOutOfBoundsException:数组索引越界异常

StringIndexOutOfBoundsException:字符串索引越界异常

List的子类

ArrayList集合

java.util.ArrayList集合数据存储的结构是数组结构。元素的增删慢,查找快,由于日常开发中使用最多的功能为查询数据,遍历数据,所以ArrayList集合是最常用的集合。

许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。

LinkedList集合

java.util.LinkedList集合 implements List接口

特点:

  1. 底层是一个链表结构:查询慢,增删快

  2. 里边包含了大量操作首尾元素的方法

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

  • public void addFirst(E e) :将指定元素插入此列表的开头

  • public void addLast(E e) :将指定元素添加到此列表的结尾

  • public void push(E e):将元素推入此列表所表示的堆栈。

  • public E getFirst() :返回此列表的第一个元素

  • public E getLast():返回此列表的最后一个元素。

  • public E removeFirst():移除并返回此列表的第一个元素。

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

  • public E pop():从此列表所表示的堆栈处弹出一个元素。

  • public boolean isEmpty():如果列表不包含元素,则返回true

Set接口

java.util.Set接口 extends Collection接口

特点:

  1. 不允许存储重复的元素

  2. 没有索引,没有带索引的方法,也不能使用普通的for循环遍历

java.util.HashSet集合 implement Set接口

特点:

  1. 不允许存储重复的元素

  2. 没有索引,没有带索引的方法,也不能使用普通的for循环遍历

  3. 是一个无序的集合,存储元素和取出元素的顺序有可能不一致

  4. 底层是一个哈希表结构(查询的速度非常快)

哈希值

是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到的地址,不是数据实际存储的物理地址)

在Object类有一个方法,可以获取对象的哈希值

public int hashCode():返回该对象的哈希码值。

hashCode方法源码:

 public native int hashCode();

native:代表该方法调用的是本地操作系统的方法

哈希表

Java学习笔记14_第1张图片

set集合存储元素不重复的原理

Java学习笔记14_第2张图片

HashSet存储自定义类型元素

set集合保证元素唯一:

存储的元素(String,Integer,...Student,Person...),必须重写hashCode方法和equals方法

LinkedHashSet集合

java.util.LinkedHashSet集合 extends HashSet集合

特点:

底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序

可变参数

是JDK1.5之后出现的新特性

使用前提:

当方法的参数列表的数据类型已经确定,但是参数的个数不确定,就可以使用可变参数

使用格式:定义方法时使用

修饰符 返回值类型 方法名(数据类型...变量名){}

原理:

可变参数的底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数

传递的参数个数,可以是0个(不传递),1,2...多个

注意事项:

  1. 一个方法的参数列表,只能有一个可变参数

  2. 如果方法的参数有多个,那么可变参数必须写在参数列表的末尾

特殊(终极)写法:

 public static void method(Object...obj){
         
     }

你可能感兴趣的:(java,学习,链表)