java list 特点,分享一篇大佬的笔记,List集合特点+常见方法讲解,建议收藏!

List集合

java.util.List接口extends Collection接口

List接口的特点:有序的集合,存储元素和取出元素的顺序是一致的

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

允许存储重复的元素

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); 用指定元素替换集合中指定位置的元素,返回值 更新前的元素。

注意:

操作索引的时候,一定要防止索引越界异常。public static void main(String[] args) {

//创建一个List集合对象,多态

Listlist = new ArrayList<>();

//使用add方法往集合里添加元素

list.add("a");

list.add("b");

list.add("c");

list.add("d");

list.add("a");

System.out.println(list);

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

//在c和d之间添加DNA

list.add(3, "DNA");

System.out.println(list);

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

//移除c元素

String removeE = list.remove(2);

System.out.println("被移除的元素:" + removeE);

System.out.println(list);

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

//把最后一个a替换成A

String setE = list.set(4, "A");

System.out.println("被替换的元素:" + setE);

System.out.println(list);

//List集合遍历有三种方式

//使用普通的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("--------------------");

//使用迭代器

Iteratorit = list.iterator();

while (it.hasNext()) {

String str = it.next();

System.out.println(str);

}

System.out.println("--------------------");

//使用增强for

for (String s : list) {

System.out.println(s);

}

}

-----------------------------------------------------------------------------------------------------------------

[a, b, c, d, a]

[a, b, c, DNA, d, a]

被移除的元素:c

[a, b, DNA, d, a]

被替换的元素:a

[a, b, DNA, d, A]

a

b

DNA

d

A

--------------------

a

b

DNA

d

A

--------------------

a

b

DNA

d

A

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 static void main(String[] args) {

show01();

}

/*

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

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

* - public void push(E e) 将元素推入此列表所表示的堆栈。 此方法等效于addFirst(E e)

*/

private static void show01() {

// 创建linkedlist对象

LinkedListlinked = new LinkedList<>();

// 使用add方法往集合中添加元素

linked.add("a");

linked.add("b");

linked.add("c");

System.out.println(linked);

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

linked.addFirst("www");

linked.push("com");// 等效于addFirst(E e)

System.out.println(linked);

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

linked.addLast("cn");// 等效于add方法

System.out.println(linked);

System.out.println("----------------------");

show02();

}

/*

* - public E getFirst() 返回此列表的第一个元素。

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

*/

private static void show02() {

// 创建linkedlist对象

LinkedListlinked = new LinkedList<>();

// 使用add方法往集合中添加元素

linked.add("a");

linked.add("b");

linked.add("c");

System.out.println(linked);

linked.clear();

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

if (!linked.isEmpty()) {

String first = linked.getFirst();

System.out.println(first);

String last = linked.getLast();

System.out.println(last);

}

System.out.println("---------");

show03();

}

/*

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

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

- public E pop() 从此列表所表示的堆栈处弹出一个元素。相当于removeFirst()

*/

private static void show03() {

// 创建linkedlist对象

LinkedListlinked = new LinkedList<>();

// 使用add方法往集合中添加元素

linked.add("a");

linked.add("b");

linked.add("c");

//String first = linked.removeFirst();

String first = linked.pop();

System.out.println("被移除的第一个元素是" + first);

System.out.println(linked);

String last = linked.removeLast();

System.out.println("被移除的最后一个元素是" + last);

System.out.println(linked);

}

-----------------------------------------------------------------------------------------------------------------

[a, b, c]

[com, www, a, b, c]

[com, www, a, b, c, cn]

----------------------

[a, b, c]

---------

被移除的第一个元素是a

[b, c]

被移除的最后一个元素是c

[b]

HashSet集合

java.util.Set接口 extends Collection接口

Set接口的特点:

不允许存储重复的元素。

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

java.util.HashSet集合implements Set接口

HashSet特点:不允许存储重复的元素。

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

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

底层是一个哈希表结构(查询速度非常快)。public static void main(String[] args) {

Setset = new HashSet<>();

//使用add方法往集合中添加元素

set.add(1);

set.add(3);

set.add(2);

set.add(1);

//使用迭代器遍历set集合

Iteratorit = set.iterator();

while (it.hasNext()) {

Integer nnn = it.next();

System.out.println(nnn);

}

//使用增强for遍历set集合

System.out.println("---------------");

for (Integer i : set) {

System.out.println(i);

}

}

-----------------------------------------------------------------------------------------------------------------

1

2

3

---------------

1

2

3

最后

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结! 这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值