java中 两个对象list,属性一样,如何copy

在Java中,如果您有两个不同的 List 对象,且它们包含的元素类型相同(比如都是自定义的对象),并且您希望从一个列表复制到另一个列表,您可以采用以下几种方法:

1. 使用 ArrayList 构造函数

如果您只是想复制列表中的对象引用而不是创建新的对象实例,可以使用 ArrayList 的构造函数来创建一个新的列表。

import java.util.ArrayList;
import java.util.List;

class Item {
    private String name;

    public Item(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

public class ListCopyExample {
    public static void main(String[] args) {
        List<Item> originalList = new ArrayList<>();
        originalList.add(new Item("Item 1"));
        originalList.add(new Item("Item 2"));

        // 使用 ArrayList 构造函数创建副本
        List<Item> copiedList = new ArrayList<>(originalList);

        System.out.println("Original List: " + originalList);
        System.out.println("Copied List: " + copiedList);
    }
}

2. 使用 Stream API

如果您想要复制列表中的对象并创建新的对象实例,可以使用Java 8的 Stream API。

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

class Item {
    private String name;

    public Item(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public Item copy() {
        return new Item(this.name);
    }
}

public class ListCopyExample {
    public static void main(String[] args) {
        List<Item> originalList = new ArrayList<>();
        originalList.add(new Item("Item 1"));
        originalList.add(new Item("Item 2"));

        // 使用 Stream API 和 Item 的 copy 方法创建新的对象实例
        List<Item> copiedList = originalList.stream()
                .map(Item::copy)
                .collect(Collectors.toList());

        System.out.println("Original List: " + originalList);
        System.out.println("Copied List: " + copiedList);
    }
}

3. 使用循环

您也可以使用传统的循环来复制列表中的对象。

import java.util.ArrayList;
import java.util.List;

class Item {
    private String name;

    public Item(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public Item copy() {
        return new Item(this.name);
    }
}

public class ListCopyExample {
    public static void main(String[] args) {
        List<Item> originalList = new ArrayList<>();
        originalList.add(new Item("Item 1"));
        originalList.add(new Item("Item 2"));

        // 使用循环和 Item 的 copy 方法创建新的对象实例
        List<Item> copiedList = new ArrayList<>();
        for (Item item : originalList) {
            copiedList.add(item.copy());
        }

        System.out.println("Original List: " + originalList);
        System.out.println("Copied List: " + copiedList);
    }
}

在这些示例中,我们假设 Item 类有一个 copy() 方法来创建新实例。如果您的对象没有这样的方法,您可以直接在循环或流操作中创建新实例。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值