Java 如何将Hashmap数据(可变键/值大小)转储到Android Studio中特定内存位置的.csv文件中?

Java 如何将Hashmap数据(可变键/值大小)转储到Android Studio中特定内存位置的.csv文件中?,java,android,csv,Java,Android,Csv,我的hashmap将字符串类型作为键,将数组列表类型作为值,例如{“v1”=[1.1,1.2,1.3],“v2”=[2.1,2.2,2.3,2.4]}其中“v1”和“v2”是键。有40多个键(以前未知大小),每个键都有一个ArrayList,其大小可能不一致(大小>200)。 我想在我的Android手机中以.csv文件的格式将此hashmap数据写入以下格式 v1 v2 1.1 2.1 1.2 2.2 1.3 2.3 到目前为止,我的Hashmap具有固定的键/数组大小,我使用以

我的hashmap将
字符串
类型作为键,将
数组列表
类型作为值,例如
{“v1”=[1.1,1.2,1.3],“v2”=[2.1,2.2,2.3,2.4]}
其中
“v1”
“v2”
是键。有40多个键(以前未知大小),每个键都有一个
ArrayList
,其大小可能不一致(大小>200)。 我想在我的Android手机中以.csv文件的格式将此hashmap数据写入以下格式

v1   v2 
1.1  2.1
1.2  2.2
1.3  2.3
到目前为止,我的Hashmap具有固定的键/数组大小,我使用以下代码段转储数据:

Calendar calendar = Calendar.getInstance();
                int hour = calendar.get(Calendar.HOUR_OF_DAY);
                int minute = calendar.get(Calendar.MINUTE);
                int second = calendar.get(Calendar.SECOND);
              
                File folder = new File(Environment.getExternalStorageDirectory() + "/santobedi" + hour + "-" + minute + "-" + second);
                String csv = folder.getAbsolutePath() + "/data.csv";
                try {
                    file_writer = new FileWriter(csv, true);

                    if (isReady == false) {  
                        String s = "v1, v2,\n";
                        file_writer.append(s);
                        isReady = true; // The columns heads are set
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
稍后,我将(按行)在循环中附加值,检查布尔值
isReady
。现在,键的大小不是固定的,所以我不能像以前那样设置列标题。我在寻找一个可能的解决方案,这个问题和我的情况差不多。然而,这与安卓手机内部的内存位置无关,公认的答案仍然不能解决我的问题


请帮忙

我用以下方法解决了我的问题:

 public FileWriter file_writer;
 Calendar calendar = Calendar.getInstance();
                int hour = calendar.get(Calendar.HOUR_OF_DAY);
                int minute = calendar.get(Calendar.MINUTE);
                int second = calendar.get(Calendar.SECOND);
                File folder = new File(Environment.getExternalStorageDirectory() + "/Santobedi" + hour + "-" + minute + "-" + second);
                folder.mkdir();
                String csv = folder.getAbsolutePath() + "/data.csv";
                try { file_writer = new FileWriter(csv, true);
                } catch (IOException e) {
                    e.printStackTrace();
                }
稍后,使用
writeToCSV
方法将数据追加到
文件\u writer
中,如下所示:

public void writeToCsv() throws IOException {

        for(Map.Entry<String , ArrayList<Float>>IwantItasColumn:myHashMap.entrySet())
        {
            String s = "";
           for(int i =0; i<IwantItasColumn.getValue().size();i++)
           {
               s = s+ ","+ String.valueOf(IwantItasColumn.getValue().get(i));
           }
           s = AccessPointId.getKey() + "," + s + "\n";
           file_writer.append(s);
        }

        try {
            file_writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }}
Excel
中进行简单的行到列转换可以得到所需的结果

v1 1.1 1.2 1.3
v2 2.1 2.2 2.3