我想以这种格式创建一个文件:
device1,t1,t2,t3,t4,t5
device2,t1,t2,t3,t4,t5
device3,t6,t7,t8,t9,t10
device4,t6,t7,t8,t9,t10
此处,t1, t2, ..., tn
是时间戳。
每个值tn
都是基于JAR文件的一次执行生成的,同时也会生成该设备名称。
我现在可以使用JAR文件生成这样的格式:
例如:
csv文件中的当前格式:
device1,t1,device2,t2,device2,t3,device1,t4,device2,t5,device2,t6,device1,t7,device2,t8
我希望在csv文件中采用以下格式:
DEVICE1 -t1,T4,T7
的装置2 -t2,T3,T5,T6,T8
所以在这里,我必须将属于特定设备的时间戳放在右侧。
请告诉我如何用Java进行排序。
答案 0 :(得分:0)
我将根据我对你的问题的理解来回答这个问题。 您可以做的是创建一个将设备名称存储为hashmap键的hashmap。 然后为值创建一个sortedCollection。
在此已排序的集合中输入您的时间戳,并不断更新此HashMap以获取相应的设备名称密钥。
当您更新已排序的时间戳集合时,它们将自动以有序的方式存储。
你的hashmap看起来像:
key:value(collection)
device1:t1,t4,t7
device2:t2,t5,t8(在此集合的末尾添加更多时间戳)
然后在CSV文件中提供此hashmap数据。
这是从java端做的。
如果你想在为设备添加新的时间戳时对csv进行排序,那么我不这么认为你可以从java中做到这一点。然后,一旦将所有数据添加到csv文件中,就必须在csv文件中保留一些逻辑。
答案 1 :(得分:0)
这是解决方案:
我的输出为: 整个地图:{Device1 = [[t8],t9],Device2 = [[[[[t2],t3],t5],t7],t10]}
BufferedReader reader = new BufferedReader(new FileReader("results.csv"));
String eachline;
// int i=2, j=2;
while((eachline = reader.readLine()) != null)
{
String[] fields = eachline.split(",");
if(Integer.parseInt(fields[2])==0)//data is = 0
{
if(tree.get(fields[0])!=null)//returns null if this key not present
{
values.add(tree.get(fields[0]));//get entire key value pair for that particular field
}
values.add(fields[1]);//to prev value, add next value
tree.put(fields[0], values.toString());// write to hashmap along with value
values.clear();
}
}
System.out.println("Entire map:"+tree);