如何将逗号分隔的ArrayList添加到树

时间:2015-05-06 05:50:41

标签: java file-io arraylist

我有一个Movie对象,其中数据成员是String title,int year和ArrayList actors。我对如何将ArrayList<String>添加到我的树中感到有点困惑。我正在从文件中读取此信息,例如:

Forrest Gump/1994/Tom Hanks
Star Wars/1977/Mark Hamill,Carrie Fisher,Harrison Ford

到目前为止,我已经能够添加除ArrayList之外的所有其他内容。我想我还需要line.split数组的内容。此外,一些电影没有多个演员,如示例所示,所以我不知道如何实现这一点。我尝试了几种不同的方法,但最终得到了IndexOutOfBoundsException

这是我到目前为止所做的:

try{
        Scanner read = new Scanner( new File("movies.txt") );
        do{
            ArrayList<String> actorList = new ArrayList<String>();
            String line = read.nextLine();
            String [] tokens = line.split("/");
            //I think I need to add another split for commas here.
            //actorList.add() here

            tree.add( new Movie(tokens[0], Integer.parseInt(tokens[1]), actorList ));
        }while( read.hasNext() );
        read.close();
    }catch( FileNotFoundException fnf ){
        System.out.println("File not found.");
    }

如果需要,她是我的构造函数:

public Movie( String t, int y, ArrayList<String> a ){
    title = t;
    year = y;
    actors = a;
}

3 个答案:

答案 0 :(得分:3)

希望下面的代码可以正常工作。拆分逗号分隔的actor列表,将String数组转换为List并将此List添加到ArrayList。使用Arrays.asList()作为一个简洁的实现。

try{
        Scanner read = new Scanner( new File("movies.txt") );
        do{
            ArrayList<String> actorList = new ArrayList<String>();
            String line = read.nextLine();
            String [] tokens = line.split("/");
            actorList.addAll(Arrays.asList(tokens[2].split(",")));

            tree.add( new Movie(tokens[0], Integer.parseInt(tokens[1]), actorList ));
        }while( read.hasNext() );
        read.close();
    }catch( FileNotFoundException fnf ){
        System.out.println("File not found.");
    }

答案 1 :(得分:1)

您可以用逗号分割最后一个标记,并将创建的每个字符串插入actorList

...
String [] tokens = line.split("/");
String lastToken = tokens[tokens.length-1];
if (tokens.length == 3) {
    String[] actors = lastToken.split(",");
    for (String actor : actors) {
        actorList.add(actor);
    }
}
...

答案 2 :(得分:0)

试试这个:

String actors = tokens[tokens.length-1];
actorList = Arrays.asList(actors.split(","));