我们下面的代码是一个简单的循环,它遍历一个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);
}
}
答案 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)
多维数组是可能的,多维数组列表也是如此,但我不认为这就是你所需要的。
重申您正在尝试做的事情:您尝试将String
和Timestamp
存储在一起。使用数组执行此操作的最简单方法有些粗糙。你创建了两个数组:一个用于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.
}