我需要将CSV文件的每一行转换为单独的堆栈(每行一个堆栈)。我的问题是在扫描每一行并将CSV转换为堆栈后,我应该在哪里存储堆栈?我不知道我要创建多少个堆栈,所以我需要一个动态数据结构来存储创建的堆栈。以下是我的代码。
Scanner scanner = new Scanner(new FileReader(filepath));
Stack<String> st = new Stack<String>();
String line;
while (scanner.hasNextLine()){
line = scanner.nextLine();
List<String> items = Arrays.asList(line.split(":",-1));
String x=items.get(0);
while(x == null || x.equals("#"))
{
line = scanner.nextLine();
items=Arrays.asList(line.split(":",-1));
x=items.get(0);
}`
st.addAll(items);
//i need to store st into a data structure before i clear it.
st = new Stack<String>();
}
答案 0 :(得分:0)
这是您正在寻找的实施方案:
String line;
while (scanner.hasNextLine()){
line = scanner.nextLine();
List<String> items = Arrays.asList(line.split(":",-1));
String x=items.get(0);
while(x == null || x.equals("#"))
{
line = scanner.nextLine();
items=Arrays.asList(line.split(":",-1));
x=items.get(0);
}`
st.addAll(items);
stackList.add(st);
//i need to store st into a data structure before i clear it.
st = new Stack<String>();
}
但是,不建议将此作为可能通过简单的谷歌搜索或一些基础研究解决的此类问题的平台。
答案 1 :(得分:-1)
请指定您的语言以及您使用的库。 但是,正确缩进代码更为重要。 这就是我认为你无论如何:
Scanner scanner = new Scanner(new FileReader(filepath));
List<Stack<String>> st = new List<Stack<String>>();
String line;
while (scanner.hasNextLine())
{
line = scanner.nextLine();
List<String> items = Arrays.asList(line.split(":",-1));
String x = items.get(0);
if (x != null && !x.equals("#"))
st.add(items);
}
我所知道的是,至少在没有超过50 Mb的大文件时,不需要“动态数据结构”。