导入csv执行搜索而不使用opencsv

时间:2016-08-31 08:52:37

标签: java csv random collections

我想在不使用opencsv的情况下导入csv文件,并将这些数据存储在集合中。从该集合中抽取任何随机数据并在屏幕上显示。 (仅使用java预定义的包。不是opencsv)

package panellist;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Random;
import java.util.Set;
public class PanelList {
private static Random r = new Random();
private static int rand;
private static int endRange = 20;
private static List<Integer> randomNumber;
public static void main(String[] args) {

    String fileName = "C:\\Users\\Ankit\\Desktop\\Book2.csv";
File file = new File(fileName); // TODO: read about File Names
Scanner scan = new Scanner(System.in);
HashMap map = new HashMap();
ArrayList al = new ArrayList();
int i =0;



try {
    Scanner inputStream = new Scanner(file);
    while (inputStream.hasNext()){
        String data = inputStream.next();
        System.out.println("test="+data/*.startsWith("a")*/);
        map.put(i++,data);
        StringTokenizer st = new StringTokenizer(data,",");  
 while (st.hasMoreTokens()) {  
     System.out.println(st.nextToken());  
 }
    }
    inputStream.close();

} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println("Printing HashMap:");
System.out.println(map);

endRange = map.size()-1;
for(int j=0;j<endRange;j++){
    rand = r.nextInt(endRange);
    System.out.println(map.get(r));
}



System.out.println(endRange);
rand = r.nextInt(endRange);           
       do
        {
           rand = r.nextInt(endRange);
        }
        while(randomNumber.contains(rand));

        randomNumber.add(rand);    
            Object x= randomNumber.get(randomNumber.size()-1);
       System.out.println(x);


}

}

1 个答案:

答案 0 :(得分:1)

简短回答:不要这样做。

答案很长:

  • 重新发明轮子。
  • 假设您的“csv解析器”比opencsv或任何其他现有的csv解析库更好
  • 相反:只要你给它一些合理的复杂csv输入,就可以非常安全地假设你的实现会被抛出。

如果我们正在谈论“学校作业是关于编写自己的CSV解析器”;然后我建议:花一些时间学习 CSV文件可以让你惊喜的许多潜在内容。然后你可以看看其他人是如何解决这些问题的。比你坐下而要做的第一件事就是要意识到简单地对','进行标记就不会这样做(到目前为止)。

(你知道,有一个原因为什么大多数人都喜欢用这个事业 - 那就是:不是一件容易的事情