就数据的存储方式而言,您的问题非常模糊,我假设这是数据当前是一个字符串或多个。为什么不将每个数据字符串附加到一个巨型字符串中,每个用户用分号分隔,用ArrayList<String> dataList = new ArrayList<String>(Arrays.asList(dataStr.split("\\;")) 将其拆分为一个列表,然后将该列表的内容拆分为各自的子列表,用冒号拆分?
例如:
"user1:data1:data2;user2:data1:data2;user3:data1:data2;
**split by semicolon**
= [user1:data1:data2]
[user2:data1:data2]
[user3:data1:data2]
**split again by colon**
= [[user1][data1][data2]
[[user2][data1][data2]
[[user3][data1][data2]
这样您可以通过索引引用用户,然后通过子索引引用他们包含的数据。在实践中,它看起来像:
public static void main(String[] args){
String dataStr = "2016/02/19 04:25:56,User,0.9,0,0,0,0,0.0\n"
+"2016/02/19 04:25:58,User,0.0,0,0,0,0,0.0\n"
+"2016/02/19 04:25:58,User,0.0,0,0,0,0,0.0\n"
+"2016/02/19 04:25:57,User,0.0,0,0,0,0,0.0\n";
//ArrayList containing a line of split data
ArrayList<String> dataList = new ArrayList<String>(Arrays.asList(dataStr.split("\\n")));
//ArrayList of each ArrayList containing a line
ArrayList<ArrayList<String>> listOfDataLists = new ArrayList<ArrayList<String>>();
//To the end of
for(int i = 0; i < dataList.size(); i++)
{
listOfDataLists.add(new ArrayList<String>(Arrays.asList(dataList.get(i).split(","))));
}
//DEBUG PRINTS---------------------------------------------------------------------
System.out.println("------------DEBUG-------------");
for(int i = 0; i < listOfDataLists.size(); i++){
for(int j = 0; j < listOfDataLists.get(i).size(); j++){
System.out.println("[" + listOfDataLists.get(i).get(j) + "]");
}
System.out.println("------------------------------");
}
}
在这里,为了便于阅读,我将数据字符串分成单独的行,然后使用换行正则表达式而不是我之前建议的分号,但本质上它只是同一件事。处理:
2016/02/19 04:25:56,User,0.9,0,0,0,0,0.0;2016/02/19 04:25:58,User,0.0,0,0,0,0,0.0;2016/02/19 04:25:58,User etc....
只需要替换分号的 split("\n") ,或者实际上你的偏好可能是什么。如果数据已经存储为用户列表(可能考虑到您已经将它们垂直列出),那么该死的,您已经完成了一半。
当前状态下的输出是:
------------DEBUG-------------
[2016/02/19 04:25:56]
[User]
[0.9]
[0]
[0]
[0]
[0]
[0.0]
------------------------------
[2016/02/19 04:25:58]
[User]
[0.0]
[0]
[0]
[0]
[0]
[0.0]
------------------------------
[2016/02/19 04:25:58]
[User]
[0.0]
[0]
[0]
[0]
[0]
[0.0]
------------------------------
[2016/02/19 04:25:57]
[User]
[0.0]
[0]
[0]
[0]
[0]
[0.0]
------------------------------
我希望这与您希望得到的答案相符,因为它将每个用户的数据保存在一个列表中,同时仍然保留分配给他们的用户数据,因为您可以通过父列表获取用户索引,然后他们的数据按子列表索引。
免责声明:我不是绝地大师级程序员,这可行,但我不能保证这是最好的方式。然而,这确实是一种方式。