Need help java-arraylist

Coded in many languages ​​before, but new to Java. I want to create an array whose members are of type

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

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

Then I get market data, which I insert into data1, and then

ftsedata.add(data1);

Then I wait for the fresh data, and when I receive it, I insert it into file1 and add it to ftsedata. Although ftsedata seems to grow in size correctly, it seems that the ftsedata elements are just pointers to data1, and therefore all ftsedata elements seem to have values ​​equal to the last values ​​of data1.

I use arraylist because I don't know how much data will go in during the day, so I need something that expands.

Can someone tell me if I should use arraylist or something else, and if arraylist, what is my problem.

Thank you very much for your time.


Thanks everyone

, 1. , data1 , . , data1 arraylist, dataLocal Data dataLocal.price = data1.price; .. dataLocal arraylist. , . , , dataLocal, . , , , - , -, , , - dataLocal, , .

+3
5

, ArrayList<E> ( List<E>) , .

, , , public class Data . , , Data, .

.

  • Java 2nd Edition, 52: .
  • Java 2nd Edition, 15:
+3

, ArrayList, , . , :

data data1 = new data();
data1.price = 50;
ArrayList ftsedata = new ArrayList<data>();
ftsedata.add(data1);
data1.price = 500;

data1, , ArrayList, 1 frsedata.get(0) . , ArrayList, , , .

ArrayList ftsedata = new ArrayList<data>();
data data1 = new data();
//set values for properties of data1 here from wherever you are getting them
data1.price = 50;
...
ftsedata.add(data1);

data data2 = new data();
//set values for properties of data2 here from wherever you are getting them
data2.price = 500;
...
ftsedata.add(data2);

, ArrayList .

+3

, - "" ( C/++)

ArrayList "" "" ( Java).

, Data, data1, Data, ftsedata.

+2

ArrayList is the right solution, but you just need to customize how you use it. Adding a function to create a local object for each insert will help in your situation. See below. I changed your code a bit. I just whipped it in Notepad, so I apologize for any mistakes. We hope that the demonstrated methods will help.

public class Data
{
    String date="";
    String time="";
    double  price=0;
    int volume=0;
};
public class DataModel
{
   ArrayList<Data> ftsedata;
   public DataModel()
   {
      ftsedata = new ArrayList<Data>();
   }
   public void addDataPoint()
   {
       Data dp = new Data();
       dp.price = 50;
       dp.volume = 10;
       ...
       ftsedata.add(dp);
   }
}

// In your main control part of the application or wherever    
DataModel ftseDataModel = new DataModel();
while(something) // Maybe while you read a file? Check the server every so often
{
   ftseDataModel.addDataPoint();
}
0
source

Try cloning an object before placing it in an ArrayList:

ftsedata.add(data1.clone());
-2
source

Source: https://habr.com/ru/post/1756551/


All Articles