多个arraylist,试图存储数据的时间戳

时间:2016-01-13 19:29:07

标签: java arraylist

我们下面的代码是一个简单的循环,它遍历一个arraylist并将每个迭代的值存储到另一个arraylist中。每次实现迭代时,获得时间戳值。我们如何创建或更改现有的arrylist以将值和时间戳存储在一起。我们可以创建一个多维的arraylist来做这个,即arraylist [0],[0]。如果是这样的话?

 int counter = 0; //current number of iterations
 ArrayList<String> logData = new ArrayList<String>();

 while (counter < TemData.size()) {

     Thread.sleep(5000); // Sleep for 5000 milliseconds (5 seconds)
     nowTime = new GetCurrentTimeStamp(); 

     logData.add((String) TemData.get(counter));

     System.out.println();
     System.out.println("Outputting Array Data >> " + logData.get(counter));

     //add to timestamp ArrayList
     nowTime = new GetCurrentTimeStamp();

     counter++; //increment counter)
}

这是GetCurrentTimeStamp类

public class GetCurrentTimeStamp {
public GetCurrentTimeStamp()
public GetCurrentTimeStamp() {
     //Date object
     Date date= new Date();
     //getTime() returns current time in milliseconds
     long time = date.getTime();
     //Passed the milliseconds to constructor of Timestamp class 
     Timestamp ts = new Timestamp(time);
     System.out.println("Time Stamp >> "+ts);
    }  
}

2 个答案:

答案 0 :(得分:2)

为什么不创建一个简单的类来存储您的值?

class MyData {
    private String myString;
    private Timestamp myTime;

    MyData(String string, Timestamp timestamp) {
        this.myString = string;
        this.myTime = timestamp;
    }

    // getters and setters of your choosing
}

然后在你的代码中,而不是 ArrayList<String> logData = new ArrayList<String>();改为ArrayList<MyData> logData = new ArrayList<MyData>();

在循环中,您可以执行类似

的操作
MyData myData = new MyData((String) TemData.get(counter), nowtime);
logData.add(myData);

...或根据您想要使用的ArrayList值调整实际添加到nowTime

答案 1 :(得分:0)

多维数组是可能的,多维数组列表也是如此,但我不认为这就是你所需要的。

重申您正在尝试做的事情:您尝试将StringTimestamp存储在一起。使用数组执行此操作的最简单方法有些粗糙。你创建了两个数组:一个用于String,一个用于Timestamp,你可以通过索引“关联”值。例如:

ArrayList<String> strings = new ArrayList<String>();
ArrayList<Timestamp> times= new ArrayList<Timestamp>();

...

strings.get(5); // Your sixth logged entry
times.get(5); // and its associate timestamp

就像我说的那样粗糙,容易出错,因为你需要确保指数始终匹配。

另一种可能性是使用某种关联集合。想到哈希地图。例如:

HashMap<Timestamp, String> logEntries = new HashMap<Timestamp, String>();
logEntries.put(GetCurrentTimeStamp(), (String) TemData.get(counter));

在搜索/迭代集合时,您将遍历logEntries.keySet()中的所有键。例如:

for (Timestamp key : logEntries.keySet())
{
    String value = logEntries.get(key);
    // Do your processing here - you now know the key and value pair.
}