gpt4 book ai didi

java - 转置数组

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:36 24 4
gpt4 key购买 nike

我正在使用以下代码读取 CSV 文件:

  String next[] = {};
List<String[]> dataArray = new ArrayList<String[]>();

try {
CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("inputFile.csv")));
for(;;) {
next = reader.readNext();
if(next != null) {
dataArray.add(next);
} else {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}

这会将 CSV 文件转换为数组“dataArray”。我的应用程序是字典类型的应用程序——输入数据的第一列是单词列表,第二列是这些单词的定义。以下是加载数组的示例:

Term 1, Definition 1
Term 2, Definition 2
Term 3, Definition 3

为了访问数组中的字符串之一,我使用了以下代码:

dataArray.get(rowNumber)[columnNumber]

但是,我需要能够生成所有术语的列表,以便可以为字典应用程序显示它们。据我了解,单独访问列比访问行要漫长得多(我来自 MATLAB 背景,这很简单)。

似乎为了能够随时访问我的输入数据的任何行,我最好转置数据并以这种方式读取它;即:

Term 1, Term 2, Term3
Definition 1, Definition 2, Definition 3

当然,我可以只提供一个首先转置的 CSV 文件 - 但 Excel 或 OO Calc 不允许超过 256 行,而我的词典包含大约 2000 个术语。

欢迎使用以下任何解决方案:

  • 一种在读入数组后转置数组的方法
  • 对上面发布的代码进行更改,使其以“转置”方式读取数据
  • 一种将数组的整个列作为一个整体读取的简单方法

最佳答案

使用 Map 数据结构(例如 HashMap )可能会更好:

String next[] = {};
HashMap<String, String> dataMap = new HashMap<String, String>();

try {
CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("inputFile.csv")));
for(;;) {
next = reader.readNext();
if(next != null) {
dataMap.put(next[0], next[1]);
} else {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}

然后你可以访问第一列

dataMap.keySet();

第二列由

dataMap.values();

注意这里的一个假设:输入数据的第一列都是唯一值(即,“Term”列中没有重复值)。

为了能够访问数组形式的键(术语),您可以简单地执行以下操作:

String[] terms = new String[dataMap.keySet().size()];
terms = dataMap.keySet().toArray(terms);

关于java - 转置数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com