JavaList,LinkedList,Set,HashSet,LinkedHashSet,hashCode方法,可变参数,为什么重写equals方法必须重写hashCode方法

【JavaList,LinkedList,Set,HashSet,LinkedHashSet,hashCode方法,可变参数,为什么重写equals方法必须重写hashCode方法】知识养成了思想,思想同时又在融化知识。这篇文章主要讲述JavaList,LinkedList,Set,HashSet,LinkedHashSet,hashCode方法,可变参数,为什么重写equals方法必须重写hashCode方法相关的知识,希望能为你提供帮助。
List类常用方法

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

/*
java.util.List接口 extends Collection接口
List接口的特点:
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:字符串索引越界异常
*/
public class Demo01List
public static void main(String[] args)
//创建一个List集合对象,多态
List< String> list = new ArrayList< > ();
//使用add方法往集合中添加元素
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
//打印集合
System.out.println(list); //[a, b, c, d, a]不是地址重写了toString

//public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
//在c和d之间添加一个itheima
list.add(3,"itheima"); //[a, b, c, itheima, d, a]
System.out.println(list);

//public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
//移除元素
String removeE = list.remove(2);
System.out.println("被移除的元素:"+removeE); //被移除的元素:c
System.out.println(list); //[a, b, itheima, d, a]

//public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
//把最后一个a,替换为A
String setE = list.set(4, "A");
System.out.println("被替换的元素:"+setE); //被替换的元素:a
System.out.println(list); //[a, b, itheima, d, A]

//List集合遍历有3种方式
//使用普通的for循环
for(int i=0; i< list.size(); i++)
//public E get(int index):返回集合中指定位置的元素。
String s = list.get(i);
System.out.println(s);

System.out.println("-----------------");
//使用迭代器
Iterator< String> it = list.iterator();
while(it.hasNext())
String s = it.next();
System.out.println(s);

System.out.println("-----------------");
//使用增强for
for (String s : list)
System.out.println(s);


String r = list.get(5); //IndexOutOfBoundsException: Index 5 out-of-bounds for length 5
System.out.println(r);



LinkedList
import java.util.LinkedList;

/*
java.util.LinkedList集合 implements List接口
LinkedList集合的特点:
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。

*/
public class Demo02LinkedList
public static void main(String[] args)
show03();


/*
- public E removeFirst():移除并返回此列表的第一个元素。
- public E removeLast():移除并返回此列表的最后一个元素。
- public E pop():从此列表所表示的堆栈处弹出一个元素。此方法相当于 removeFirst
*/
private static void show03()
//创建LinkedList集合对象
LinkedList< String> linked = new LinkedList< > ();
//使用add方法往集合中添加元素
linked.add("a");
linked.add("b");
linked.add("c");
System.out.println(linked); //[a, b, c]

//String first = linked.removeFirst();
String first = linked.pop();
System.out.println("被移除的第一个元素:"+first);
String last = linked.removeLast();
System.out.println("被移除的最后一个元素:"+last);
System.out.println(linked); //[b]


/*
- public E getFirst():返回此列表的第一个元素。
- public E getLast():返回此列表的最后一个元素。
*/
private static void show02()
//创建LinkedList集合对象
LinkedList< String> linked = new LinkedList< > ();
//使用add方法往集合中添加元素
linked.add("a");
linked.add("b");
linked.add("c");

//linked.clear(); //清空集合中的元素 在获取集合中的元素会抛出NoSuchElementException

//public boolean isEmpty():如果列表不包含元素,则返回true。
if(!linked.isEmpty())
String first = linked.getFirst();
System.out.println(first);

    推荐阅读