我有以下代码:
try {
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setLineSeparatorDetectionEnabled(true);
RowListProcessor rowProcessor = new RowListProcessor();
parserSettings.setRowProcessor(rowProcessor);
parserSettings.setHeaderExtractionEnabled(true);
CsvParser parser = new CsvParser(parserSettings);
parser.parse(new FileReader("C:\\Users\\Desktop\\GeoIPCountryWhois.csv"));
String[] headers = rowProcessor.getHeaders();
List<String[]> rows = rowProcessor.getRows();
for (int index = 0;index< rows.size();index++){
System.out.println(Arrays.toString(rows.get(index)));
}
} catch (FileNotFoundException ex) {
Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
}
每次都会创建一行数组 如下所示
[1.0.1.0, 1.0.3.255, 16777472, 16778239, CN, China]
[1.0.4.0, 1.0.7.255, 16778240, 16779263, AU, Australia]
[1.0.8.0, 1.0.15.255, 16779264, 16781311, CN, China]
但是我想把我的数据放到一个单独的数组中,我该怎么做?
答案 0 :(得分:1)
也许你想要这样的东西..
List<String[]> rows = rowProcessor.getRows();
List<String> oneList = rows.stream().flatMap(Arrays::stream).collect(Collectors.toList());
String[] oneArray = oneList.toArray(new String[0]);
答案 1 :(得分:1)
你的意思是数组数组吗?
List<String[]> rows = rowProcessor.getRows();
String[][] rowsArray = rows.toArray(new String[rows.size()][]); //this contains an array of all your rows
验证:
for (int i = 0; i < rowsArray.length; i++) {
System.out.println(Arrays.toString(rowsArray[i]));
}
这将提供与您相同的输出。