List集合常见的几种使用方法

List集合常见的几种使用方法

插入元素

关键代码格式:list.add(位置,“元素”);

样例:
在这里插入图片描述
运行结果:
在这里插入图片描述

删除指定的索引元素

关键代码格式: list.remove(元素位置);

样例:
在这里插入图片描述
运行结果:
在这里插入图片描述

在指定位置插入元素,若集合发生改变则返回true,否则返回false.

关键代码格式: Boolean b=list.addAll(2,集合名);
样例:
在这里插入图片描述
运行结果:
在这里插入图片描述

返回list集合中指定索引位置的元素

关键代码格式:Object obj=list.get(元素位置);
样例:
在这里插入图片描述
运行结果:
在这里插入图片描述

返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1

关键代码格式:int i=list.indexOf(“索引对象”);
样例:
在这里插入图片描述
运行结果:
在这里插入图片描述

在索引为index位置的元素更改为element元素

关键代码格式:list.set(元素位置, “替换内容”);
样例:
在这里插入图片描述
运行结果:
在这里插入图片描述

Java中,`List` 集合本质上是一个泛型集合(Generic Collection),这意味着你可以通过指定类型参数来限制它所能容纳的数据种类。通常情况下,在创建 `List` 实例时就会声明其具体的元素类型,例如 `List<String>` 表示只能存放字符串类型的列表。 然而,如果你希望一个 `List` 中包含多种不同类型的数据,有两种常见的方式可以实现这一点: ### 1. 使用原始类型 (Raw Type) 这是最直接但也最容易引发安全问题的做法——简单地将 `List<Object>` 视作未指明具体类型的容器。由于不再受制于编译期检查机制,所以理论上确实可以在这样的列表里混杂着各种不同类型的对象。不过这种做法并不推荐,因为这样做会失去很多静态类型系统带来的优势,如错误预防和文档说明等,并可能导致运行时期间难以发现的问题(比如 `ClassCastException` 异常)。 例子代码: ```java // 不建议这么做;可能会导致 ClassCastExceptions 等风险 List rawTypeList = new ArrayList(); rawTypeList.add("Hello"); rawTypeList.add(42); System.out.println(rawTypeList.get(0).toString()); // 运行正常 Integer num = (Integer) rawTypeList.get(1); // 安全转换 String str = (String) rawTypeList.get(1); // 抛出异常! ``` ### 2. 利用公共超类或接口 更为优雅也更符合面向对象设计原则的方法是让所有预期要存入列表中的类都继承自某个共同的父级类或是实现了某些通用接口。此时我们可以把那个作为类型参数传递给我们的 `List`,从而既能保持灵活性又能享受一定程度的安全保障。 例如,如果你想在一个 `List` 中同时存储水果名称(字符串)、价格信息(数字)以及其他与商品有关的信息(假设它们都有各自的属性表示法),那么可以让每种商品的具体实现去各自定义自身的特征,并统一实现某一套标准协议,像 `Comparable` 接口就是这样一个很好的候选者。 另一个实用的例子可能是利用 Java 自带的基础类型包装类及其祖先节点 `Number` 来构造数值序列: ```java // 更好的实践方式:限定范围内的多样性 List<Number> numberList = Arrays.asList(5L, 3.7f, BigInteger.valueOf(9)); for(Number n : numberList){ double valAsDouble = n.doubleValue(); // 每个 Number 对象都能提供基本算术运算的支持 } class Fruit implements Serializable { /* ... */ } List<Fruit> fruitBasket = new LinkedList<>(); // 存储任意实现了Serializable接口的Fruit实例 fruitBasket.add(new Apple()); fruitBasket.add(new Orange()); ``` 在这种模式下,虽然每个元素还是保持着各自特性的表达形式,但我们依然可以通过共享的行为约定来进行一致化的处理流程而不会影响整体架构的质量和稳定性。 总结起来, - 如果你知道了确切的目标类型集合并且想要维持较高的安全性水平的话,请尽量避免使用裸露的基本数据类型,而是寻找合适的抽象层级来做约束。 - 否则对于临时性需求或者快速原型构建而言,“Object”确实是最宽松的选择之一,但应当谨慎对待由此引入的风险因素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值