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

Posted Bug挖掘机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);LinkedList内部实现原理

javaList容器中容易忽略的知识点

LinkedList用法

java题:把一个map放在list里,怎样再把它拿出来

java list的重复对象怎么去除

集合之List和Set