List的三个子类的特点

本文详细解析了List的三个子类ArrayList、Vector和LinkedList的特点,包括它们的数据结构、查询速度、增删性能以及线程安全性。针对不同应用场景,如查询密集型或增删操作频繁的情况,提供了选择建议。

List的三个子类的特点

  • A:List的三个子类的特点

    • ArrayList:
      底层数据结构是数组,查询快,增删慢.
      线程不安全,效率高.

    • Vector:
      底层数据结构是数组,查询快,增删慢.
      线程安全,效率低.
      Vector相对ArrayList查询慢(线程安全)
      Vector相对LinkedList增删慢(数组结构不同)

    • Vector和ArrayList的区别:
      Vector是线程安全的,效率低.
      ArrayList是线程不安全的,效率更高.
      共同点:都是数组实现的

    • ArrayList和LinkedList的区别:
      ArrayList底层是数组结构,增加和删除比较慢,查询和修改比较快.
      LinkedList底层是链表结构的,增加和删出比较快,查询和修改比较慢.
      共同点:都是线程不安全的.

  • B:List有三个儿子,我们到底使用谁呢?
    查询多用ArrayList
    增删多用LinkedList
    如果都多用ArrayList.

在 Java 中,如果你想将一个 `List<Byypdjb>` 转换为 `List<ByypdjbVO>`,其中 `ByypdjbVO` 是 `Byypdjb` 的子,你可以使用以下几种方式来实现: ### 方法一:使用 Java 8 的 Stream API 进行转换 ```java import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Byypdjb> list = // 初始化你的 list List<ByypdjbVO> voList = list.stream() .map(item -> (ByypdjbVO) item) .collect(Collectors.toList()); } } ``` #### 解释: - `list.stream()`:将 `List<Byypdjb>` 转换为一个流。 - `.map(item -> (ByypdjbVO) item)`:使用 `map` 方法将每个 `Byypdjb` 对象转换为 `ByypdjbVO` 对象。 - `.collect(Collectors.toList())`:将流中的元素收集为一个新的 `List<ByypdjbVO>`。 ### 方法二:使用循环进行转换 ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Byypdjb> list = // 初始化你的 list List<ByypdjbVO> voList = new ArrayList<>(); for (Byypdjb item : list) { voList.add((ByypdjbVO) item); } } } ``` #### 解释: - 使用 `for-each` 循环遍历 `List<Byypdjb>` 中的每个元素。 - 将每个元素强制转换为 `ByypdjbVO` 型并添加到新的 `List<ByypdjbVO>` 中。 ### 方法:使用 Apache Commons Collections 进行转换 如果你的项目中使用了 Apache Commons Collections,可以使用 `CollectionUtils.collect` 方法进行转换: ```java import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Transformer; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Byypdjb> list = // 初始化你的 list List<ByypdjbVO> voList = new ArrayList<>(); CollectionUtils.collect(list, new Transformer<Byypdjb, ByypdjbVO>() { @Override public ByypdjbVO transform(Byypdjb input) { return (ByypdjbVO) input; } }, voList); } } ``` #### 解释: - `CollectionUtils.collect` 方法可以将一个集合中的元素转换为另一种型,并将结果收集到目标集合中。 - `Transformer` 是一个接口,用于定义如何将一个对象转换为另一个对象。 ### 注意事项: 1. **型检查**:在进行强制转换之前,最好确保 `Byypdjb` 对象确实是 `ByypdjbVO` 型,否则会抛出 `ClassCastException`。 2. **空值处理**:如果 `list` 中可能存在 `null` 值,需要在转换时进行空值检查。 ### 示例代码中的型定义: ```java class Byypdjb { // 父的定义 } class ByypdjbVO extends Byypdjb { // 子的定义 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左绍骏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值