我正在尝试拆分文本文件的每一行并插入数组列表。
aa 04 cc ff gg rrr
aa 01 bb dd ee fff
aa 03 ff hh ee ttt
aa 05 dd ss ww ccc
1,如何将数字存储为整数,其余为数组列表中的字符串。 (使用当前代码抛出数字格式错误)。
2,当我使用Java集合插入数组时,是否可以基于整数进行排序?
到目前为止,我有,
List <Object> records = new ArrayList<Object>();
bf = new BufferedReader(new FileReader(getFile()));
String readLine;
while ((readLine = bf.readLine()) != null) {
try {
List <Object> record = new ArrayList<Object>();
record.add(readLine.substring(flg_start, num_start).trim());
record.add(Integer.parseInt(readLine.substring(num_start-1, fld_start-1).trim())); // converting string to int and saving to record list, throwing Number Format Error.
让我再说一遍我的问题, 如何将记录[1]设置为整数并将其作为字符串? 我在添加到数组时可以用什么集合框架进行排序? 我希望我的数组中的最终结果是一个大约1M记录的排序列表
aa 01 bb dd ee fff
aa 03 ff hh ee ttt
aa 04 cc ff gg rrr
aa 05 dd ss ww ccc
答案 0 :(得分:1)
至于数据结构,您需要TreeMap
Integer
个密钥和List
值。您应该读取该文件并将每行解析为@HaridwarJha描述,并为每一行添加新值,其中包含由解析值组成的已分析Integer
键和List
值。使用TreeMap
,您的数据将按键排序,即来自您文件的Integer
值。
Map<Integer, List<Object>> map = new TreeMap<Integer, List<Object>>();
while((line=reader.readLine())!=null){
List<Object> row = new ArrayList<>();
String[] strArray=line.split(" ");
row.add(strArray[0]);
row.add(strArray[1]);
row.add(strArray[2]);
row.add(strArray[3]);
row.add(strArray[4]);
row.add(strArray[5]);
map.put(new Integer(row.get(1)), row);
}
答案 1 :(得分:0)
您可以这样做并访问strArray,您可以使用for循环或可以使用正则表达式[0 ... 1]进行解析.... 这是一个简单的...试试吧 public static void main(String [] args){ 列表记录= new ArrayList();
File file=new File("File Location");
try {
BufferedReader reader=new BufferedReader(new FileReader(file));
String line;
while((line=reader.readLine())!=null){
String[] strArray=line.split(" ");
records.add(new Integer(strArray[1]));
records.add(new String(strArray[0]));
records.add(new String(strArray[2]));
records.add(new String(strArray[3]));
records.add(new String(strArray[4]));
records.add(new String(strArray[5]));
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(Object tmp:records){
System.out.println(tmp);
}
}