痞子374 2024-06-19 17:21 采纳率: 94.6%
浏览 10
已结题

Java如何在一个类中获取另一个类的集合中的数据

使用Java开发,如何在一个类中获取另一个类的集合里存放好的数据,如何在本类中使用另一个类的集合里的数据

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-19 17:21
    关注

    引自免费微信小程序:皆我百晓生

    要在一个Java类中访问另一个类中的集合数据,可以采用几种不同的方法。这里提供一个详细的步骤说明及示例代码,展示如何实现这一需求。

    步骤1:定义包含集合的类

    首先,创建一个类,比如DataHolder,在这个类中定义一个List类型的成员变量,并初始化这个列表。

    import java.util.ArrayList;
    import java.util.List;
    
    public class DataHolder {
        private List<String> data = new ArrayList<>();
    
        public DataHolder() {
            // 初始化数据
            data.add("Item 1");
            data.add("Item 2");
            data.add("Item 3");
        }
    
        // 提供一个getter方法,允许外部类访问这个列表
        public List<String> getData() {
            return data;
        }
    }
    

    步骤2:在另一个类中使用集合数据

    接下来,在另一个类中,比如DataConsumer,通过创建DataHolder类的实例并调用其getData()方法,来获取并使用集合数据。

    public class DataConsumer {
        public static void main(String[] args) {
            DataHolder holder = new DataHolder();
            List<String> dataList = holder.getData();
    
            // 使用数据
            for (String item : dataList) {
                System.out.println(item);
            }
        }
    }
    

    注意事项

    • 封装性:在DataHolder类中,data列表被声明为私有,以保护其不被直接修改。通过提供公共的getData()方法,允许外部安全地访问这些数据。
    • 引用传递:在DataConsumer类中,通过holder.getData()获取的是data列表的一个引用,这意味着对返回的列表进行的任何修改也会影响到DataHolder中的原始列表。如果不想让外部类修改内部数据,可以在DataHolder类的getData()方法中返回列表的不可变视图或一个新列表的拷贝。

    扩展:返回不可变视图或拷贝

    如果希望保护DataHolder中的数据不被外部修改,可以修改getData()方法,使其返回一个不可变视图或一个新列表的拷贝。

    // 返回不可变视图
    public List<String> getData() {
        return Collections.unmodifiableList(data);
    }
    
    // 或者返回一个新列表的拷贝
    public List<String> getData() {
        return new ArrayList<>(data);
    }
    

    这样,即使外部类尝试修改返回的列表,也不会影响到DataHolder中的原始数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 创建了问题 6月19日

悬赏问题

  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错
  • ¥15 拓扑学,凸集,紧集。。
  • ¥15 如何扩大AIS数据容量
  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因