java arraylist 需要帮助

标签 java

以前用过多种语言编写过代码,但对 Java 还很陌生。 我想创建一个其成员类型为

的数组
public class data
    {
        String date="";
        String time="";
        double  price=0;
        int volume=0;
    };

    data data1 = new data();
    public ArrayList ftsedata = new ArrayList<data>();

然后我获取市场数据,然后将其插入到 data1 中

ftsedata.add(data1);

然后,我等待新数据,当我得到它时,我将其再次插入 data1 并将其添加到 ftsedata。尽管 ftsedata 的大小似乎正确增加,但 ftsedata 的元素似乎只是指向 data1 的指针,因此 ftsedata 的所有元素似乎都具有等于最后一个 data1 值的值。

我使用数组列表,因为我不知道白天会输入多少数据点,所以我需要一些可扩展的东西。

有人可以告诉我是否应该使用 arraylist 或其他东西,如果 arraylist 我的问题是什么。

非常感谢您抽出时间。


非常感谢大家,

我实际上有四个不同的函数,每个函数填充 data1 的一部分。考虑到您的意见,我将 data1 单独保留为可以在所有函数中看到的变量。在将 data1 添加到数组列表的特定函数中,我创建了一个 Data 类型的 dataLocal 变量,并将所有内容复制到其中,如下所示 dataLocal.price=data1.price; 等等等等 然后我将 dataLocal 添加到数组列表中。这似乎有效。 我假设每次调用此函数时都会创建一个名为 dataLocal 的新局部变量。感谢大家的帮助,请告诉我如果这种方式做事的某些事情可能会给我以后带来麻烦,例如,程序的某些其他部分会覆盖 dataLocal 的一个实例,因为就程序而言担心对变量的需求已经结束。

最佳答案

是的,一个 ArrayList<E> (由其接口(interface) List<E> 引用)看起来是本例中您需要的数据结构。

元素引用同一对象的问题最好通过设置 public class Data 来解决。不可变的值类型。然后每当你获得新数据时,你就会实例化一个新的 Data您可以将其放入列表中的对象。

另请参阅

  • Effective Java 第 2 版,第 52 条:通过接口(interface)引用对象
  • 《Effective Java》第二版,第 15 项:最小化可变性

关于java arraylist 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3334274/

相关文章:

java - 在 ViewRootImpl.java 中创建线程

java springdoc @ApiResponses 如何定义一个列表作为返回对象使用

java - 如何使用辅助方法过滤映射集合以防止 nullPointerException

java - 如何使用java从.csv文件中获取最后两条记录?

java - 将 sleuth 添加到项目会破坏 @ConfigurationProperties 类

java - 如何运行 Endomondo 移动应用程序的 "Start tracking" Activity

java - 通过 JDBC 在 Java 中使用 Hibernate 和 MySQL 的奇怪错误

Android 9 上的 java.lang.IllegalStateException

JAVAH 找不到类(android ndk)

java - 打印文件中字母的水平直方图。如何扩展它? java