Java List接口的集合使用详解

网友投稿 209 2022-10-01


Java List接口的集合使用详解

目录ArrayList集合LinkedList类LinkedList与ArrayList的区别:总结

List接口继承collection接口,此接口可以对列表中的每个元素精确的控制,可以根据元素的索引来获取列表中的值,下面介绍常用的几种,ArrayList,LinkedList。

ArrayList集合

ArrayList是一个动态修改的数组,它没有固定的大小,不需要自己分配空间,java本身已经初始化容量为10的大小,可以直接添加删除等一系列操作。

ArrayList构造方法:

ArrayList() ;构造一个初始化容量为10的空列表。

ArrayList(Collection c) ; 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。

ArrayList(int initialCapacity) ;构造一个指定初始容量的空列表。

常用方法:

方法名

说明

boolean add(E e)

将指定元素添加到列表尾部

void add(int index, E element)

将指定元素添加到列表中指定位置

void clear()

删除此列表中的所有元素

Object clone()

返回ArrayList副本

boolean contains(Object o)

如果列表中包含指定元素则返回true,否则false

E get(int index)

返回列表中指定索引位置上的元素

int indexOf(Object o)

返回列表中首次出现的指定元素的索引,如果没有则返回-1

int lastIndexOf(Object o)

返回此列表中最后一次出现的指定元素的索引,没有则返回-1

E remove(int index)

删除指定索引上的元素,并返回删除值

boolean remove(Object o)

移除列表中首次出现的元素

E set(int index, E element)

将此列表中的索引位置的元素换成指定的元素

int size()

返回此列表中的元素个数

Object[] toArray()

将此列表所有元素换成数组

boolean isEmpty()

如果此列表为空则返回true

List subList(int fromlndex, int tolndex)

将此列表中从fromindex到toindex的元素组成新的集合返回

示例

import java.util.ArrayList;

public class dome2{

public static void main(String[] args){

ArrayList list=new ArrayList();

list.add("nihoa"); //添加字符串

list.add(12); //添加数字

list.add('a'); //添加字符

list.add("hello");

list.set(1,"java"); //将索引为1的换成字符串

System.out.println("索引为2的值是:"+list.get(2));

System.out.println("删除索引为0的值是:"+list.remove(0));

System.out.println("列表中还有"+list.size()+"个元素");

System.out.println("判断列表是不是为空: "+list.isEmpty());

for (Object object : list) { //循序打印

System.out.print(object+" ");

}

}

}

结果

索引为2的值是:a

删除索引为0的值是:nihoa

列表中还有3个元素

判断列表是不是为空: false

java a hello

例1:

创建一个商品类,指定商品的编号,名称,价格,封装它们。

class Goods{

private int id; //编号

private String name; //名称

private float price; //价格

public Goods() {

}

public Goods(int id, String name, float price) {

super();

this.id = id;

this.name = name;

this.price = price;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public float getPrice() {

return price;

}

public void setPrice(float price) {

this.price = price;

}

@Override

public String toString() { //格式输出

return "商品编号: "+id+", 名称: "+", 价格: "http://+",";

}

}

创建一个测试类,填写商品的价格,编号,名称并保存到列表中,通过ArrayList类的方法修改和获取值。

import java.util.ArrayList;

public class dome2{

public static void main(String[] args){

ArrayList list=new ArrayList();

list.add(new Goods(1,"保温杯",22.0f));

list.add(new Goods(2,"洗发水",21.3f));

list.add(new Goods(3,"笔记本",5.0f));

Goods g=new Goods(5,"热水壶",59.0f);

list.add(g);

list.add(new Goods(4,"菜刀",31.4f));

//1.遍历所有商品

for(int i=0;i

System.out.println(list.get(i).toString());

}

//2.获取指定商品的信息

System.out.println("查找编号为3,名称为热水壶,价格为59元的元素索引"+list.indexOf(g));

System.out.println("热水壶的价格是 "+list.get(3).getPrice()+" 元");

System.out.println("洗发水的编号是 "+list.get(1).getId());

System.out.println("将菜刀的价格设为120元 ");

list.get(list.size()-1).setPrice(120.0f);

//3.遍历所有商品

for(int i=0;i

System.out.println(list.get(i).toString());

}

}

}

结果

商品编号: 1 名称: 保温杯 价格: 22.0

商品编号: 2 名称: 洗发水 价格: 21.3

商品编号: 3 名称: 笔记本 价格: 5.0

商品编号: 5 名称: 热水壶 价格: 59.0

商品编号: 4 名称: 菜刀 价格: 31.4

查找编号为3,名称为热水壶,价格为59元的元素索引3

热水壶的价格是 59.0 元

洗发水的编号是 2

将菜刀的价格设为120元

商品编号: 1 名称: 保温杯 价格: 22.0

商品编号: 2 名称: 洗发水 价格: 21.3

商品编号: 3 名称: 笔记本 价格: 5.0

商品编号: 5 名称: 热水壶 价格: 59.0

商品编号: 4 名称: 菜刀 价格: 120.0

Iterator迭代器遍历:

Iterator接口是Collection接口的超级接口,通过Collection接口下的iterator方法返回iterator。

Iterator方法:

方法名

说明

boolean hasNext()

如果有元素仍可以迭代,就返回true

E next()

返回迭代的下一个元素

void remove()

移除迭代器返回的最后一个元素

public class dome2{

public static void main(String[] args){

ArrayList list=new ArrayList();

list.add("hello ");

list.add("world!,");

list.add("hello ");

list.add("java!");

Iterator it=list.iterator();

while(it.hasNext()) { //判断是否还有下一个元素

System.out.print(it.next()); //输出下一个元素

}

}

}

LinkedList类

LinkedList类采用链表结构保存对象,链表采用节点之间的指向,上一个节点指向下一个节点,并且可以在中间插入,不需要数组还需要重新排列,所以在频繁的插入元素和删除元素这方面,LinkedList类要比ArrayList类要快,效率更高。但在访问元素速度方面却相对落后。

构造方法

LinkedList() ;构造一个空列表

LinkedList(Collection c) ;构造一个包含指定 collection 中的元素的列表

常用方法:

方法名

说明

boolean add(E e)

将指定元素添加到元素列表的结尾

void add(int index, E element)

在列表中指定的位置插入指定的元素

void addFirst(E e)

将指定元素插入到此列表的开头

http://

void addLast(E e)

将指定的元素添加到此列表的结尾

boolean contains(Object o)

如果列表中有指定元素返回true,否则false

E element()

获取但不移除此列表的第一个元素

E get(int index)

返回此列表中指定的元素

E getFirst()

返回此列表的第一个元素

E getLast()

返回此列表的最后一个元素

int indexOf(Object o)

返回此列表首次出现的指定元素的索引,没有返回-1

int lastIndexOf(Object o)

返回此列表最后出现的指定元素的索引,没有返回-1

E set(int index, E element)

将列表中指定位置的元素替换

E removeFirst()

移除并返回此列表中的第一个元素

E removeLast()

移除并返回此列表的最后一个元素

示例:

public class dome2{

public static void main(String[] args){

LinkedList list=new LinkedList();

list.add("电风扇");

list.add("吹风机");

list.add("香皂");

list.add("肥皂");

list.add("洗发水");

System.out.println("获取的第一个商品是: "+list.getFirst());

System.out.println("获取的最后一个商品是: "+list.getLast());

System.out.println("删除的第一个元素是: "+list.removeFirst());

System.out.println("将索引为3的元素修改成: "+list.set(3,"牛角梳"));

for(int i=0;i

System.out.print(list.get(i)+"\t");

}

}

}

LinkedList与ArrayList的区别:

1.ArrayList类是基于数组结构实现的,访问速度优先于LinkedList类。

2.LinkedList类占用的内存空间比较大,但在批量插入,删除,修改等时优先于ArrayList类。

总结

本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

System.out.println(list.get(i).toString());

}

//2.获取指定商品的信息

System.out.println("查找编号为3,名称为热水壶,价格为59元的元素索引"+list.indexOf(g));

System.out.println("热水壶的价格是 "+list.get(3).getPrice()+" 元");

System.out.println("洗发水的编号是 "+list.get(1).getId());

System.out.println("将菜刀的价格设为120元 ");

list.get(list.size()-1).setPrice(120.0f);

//3.遍历所有商品

for(int i=0;i

System.out.println(list.get(i).toString());

}

}

}

结果

商品编号: 1 名称: 保温杯 价格: 22.0

商品编号: 2 名称: 洗发水 价格: 21.3

商品编号: 3 名称: 笔记本 价格: 5.0

商品编号: 5 名称: 热水壶 价格: 59.0

商品编号: 4 名称: 菜刀 价格: 31.4

查找编号为3,名称为热水壶,价格为59元的元素索引3

热水壶的价格是 59.0 元

洗发水的编号是 2

将菜刀的价格设为120元

商品编号: 1 名称: 保温杯 价格: 22.0

商品编号: 2 名称: 洗发水 价格: 21.3

商品编号: 3 名称: 笔记本 价格: 5.0

商品编号: 5 名称: 热水壶 价格: 59.0

商品编号: 4 名称: 菜刀 价格: 120.0

Iterator迭代器遍历:

Iterator接口是Collection接口的超级接口,通过Collection接口下的iterator方法返回iterator。

Iterator方法:

方法名

说明

boolean hasNext()

如果有元素仍可以迭代,就返回true

E next()

返回迭代的下一个元素

void remove()

移除迭代器返回的最后一个元素

public class dome2{

public static void main(String[] args){

ArrayList list=new ArrayList();

list.add("hello ");

list.add("world!,");

list.add("hello ");

list.add("java!");

Iterator it=list.iterator();

while(it.hasNext()) { //判断是否还有下一个元素

System.out.print(it.next()); //输出下一个元素

}

}

}

LinkedList类

LinkedList类采用链表结构保存对象,链表采用节点之间的指向,上一个节点指向下一个节点,并且可以在中间插入,不需要数组还需要重新排列,所以在频繁的插入元素和删除元素这方面,LinkedList类要比ArrayList类要快,效率更高。但在访问元素速度方面却相对落后。

构造方法

LinkedList() ;构造一个空列表

LinkedList(Collection c) ;构造一个包含指定 collection 中的元素的列表

常用方法:

方法名

说明

boolean add(E e)

将指定元素添加到元素列表的结尾

void add(int index, E element)

在列表中指定的位置插入指定的元素

void addFirst(E e)

将指定元素插入到此列表的开头

http://

void addLast(E e)

将指定的元素添加到此列表的结尾

boolean contains(Object o)

如果列表中有指定元素返回true,否则false

E element()

获取但不移除此列表的第一个元素

E get(int index)

返回此列表中指定的元素

E getFirst()

返回此列表的第一个元素

E getLast()

返回此列表的最后一个元素

int indexOf(Object o)

返回此列表首次出现的指定元素的索引,没有返回-1

int lastIndexOf(Object o)

返回此列表最后出现的指定元素的索引,没有返回-1

E set(int index, E element)

将列表中指定位置的元素替换

E removeFirst()

移除并返回此列表中的第一个元素

E removeLast()

移除并返回此列表的最后一个元素

示例:

public class dome2{

public static void main(String[] args){

LinkedList list=new LinkedList();

list.add("电风扇");

list.add("吹风机");

list.add("香皂");

list.add("肥皂");

list.add("洗发水");

System.out.println("获取的第一个商品是: "+list.getFirst());

System.out.println("获取的最后一个商品是: "+list.getLast());

System.out.println("删除的第一个元素是: "+list.removeFirst());

System.out.println("将索引为3的元素修改成: "+list.set(3,"牛角梳"));

for(int i=0;i

System.out.print(list.get(i)+"\t");

}

}

}

LinkedList与ArrayList的区别:

1.ArrayList类是基于数组结构实现的,访问速度优先于LinkedList类。

2.LinkedList类占用的内存空间比较大,但在批量插入,删除,修改等时优先于ArrayList类。

总结

本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

System.out.println(list.get(i).toString());

}

}

}

结果

商品编号: 1 名称: 保温杯 价格: 22.0

商品编号: 2 名称: 洗发水 价格: 21.3

商品编号: 3 名称: 笔记本 价格: 5.0

商品编号: 5 名称: 热水壶 价格: 59.0

商品编号: 4 名称: 菜刀 价格: 31.4

查找编号为3,名称为热水壶,价格为59元的元素索引3

热水壶的价格是 59.0 元

洗发水的编号是 2

将菜刀的价格设为120元

商品编号: 1 名称: 保温杯 价格: 22.0

商品编号: 2 名称: 洗发水 价格: 21.3

商品编号: 3 名称: 笔记本 价格: 5.0

商品编号: 5 名称: 热水壶 价格: 59.0

商品编号: 4 名称: 菜刀 价格: 120.0

Iterator迭代器遍历:

Iterator接口是Collection接口的超级接口,通过Collection接口下的iterator方法返回iterator。

Iterator方法:

方法名

说明

boolean hasNext()

如果有元素仍可以迭代,就返回true

E next()

返回迭代的下一个元素

void remove()

移除迭代器返回的最后一个元素

public class dome2{

public static void main(String[] args){

ArrayList list=new ArrayList();

list.add("hello ");

list.add("world!,");

list.add("hello ");

list.add("java!");

Iterator it=list.iterator();

while(it.hasNext()) { //判断是否还有下一个元素

System.out.print(it.next()); //输出下一个元素

}

}

}

LinkedList类

LinkedList类采用链表结构保存对象,链表采用节点之间的指向,上一个节点指向下一个节点,并且可以在中间插入,不需要数组还需要重新排列,所以在频繁的插入元素和删除元素这方面,LinkedList类要比ArrayList类要快,效率更高。但在访问元素速度方面却相对落后。

构造方法

LinkedList() ;构造一个空列表

LinkedList(Collection c) ;构造一个包含指定 collection 中的元素的列表

常用方法:

方法名

说明

boolean add(E e)

将指定元素添加到元素列表的结尾

void add(int index, E element)

在列表中指定的位置插入指定的元素

void addFirst(E e)

将指定元素插入到此列表的开头

http://

void addLast(E e)

将指定的元素添加到此列表的结尾

boolean contains(Object o)

如果列表中有指定元素返回true,否则false

E element()

获取但不移除此列表的第一个元素

E get(int index)

返回此列表中指定的元素

E getFirst()

返回此列表的第一个元素

E getLast()

返回此列表的最后一个元素

int indexOf(Object o)

返回此列表首次出现的指定元素的索引,没有返回-1

int lastIndexOf(Object o)

返回此列表最后出现的指定元素的索引,没有返回-1

E set(int index, E element)

将列表中指定位置的元素替换

E removeFirst()

移除并返回此列表中的第一个元素

E removeLast()

移除并返回此列表的最后一个元素

示例:

public class dome2{

public static void main(String[] args){

LinkedList list=new LinkedList();

list.add("电风扇");

list.add("吹风机");

list.add("香皂");

list.add("肥皂");

list.add("洗发水");

System.out.println("获取的第一个商品是: "+list.getFirst());

System.out.println("获取的最后一个商品是: "+list.getLast());

System.out.println("删除的第一个元素是: "+list.removeFirst());

System.out.println("将索引为3的元素修改成: "+list.set(3,"牛角梳"));

for(int i=0;i

System.out.print(list.get(i)+"\t");

}

}

}

LinkedList与ArrayList的区别:

1.ArrayList类是基于数组结构实现的,访问速度优先于LinkedList类。

2.LinkedList类占用的内存空间比较大,但在批量插入,删除,修改等时优先于ArrayList类。

总结

本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

System.out.print(list.get(i)+"\t");

}

}

}

LinkedList与ArrayList的区别:

1.ArrayList类是基于数组结构实现的,访问速度优先于LinkedList类。

2.LinkedList类占用的内存空间比较大,但在批量插入,删除,修改等时优先于ArrayList类。

总结

本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Content Security Policy 学习笔记之三:CSP 指令的使用方式(content可数吗)
下一篇:零信任态势评估:安全指标的构建原则
相关文章

 发表评论

暂时没有评论,来抢沙发吧~