返回一个ArrayList方法

时间:2013-10-24 09:48:14

标签: java arraylist

这是另外两个类的驱动方法。我发布在这里 https://codereview.stackexchange.com/questions/33148/book-program-with-arraylist

我需要一些帮助 private static ArrayList getAuthors(String authors)方法。我是一个初学者。所以请帮我完成这个驱动方法。或者给我一些指示。

指令

allAuthors数组的某些元素在两个作者名称之间包含星号“*”。 getAuthors方法使用此星号作为名称之间的分隔符,以将它们分别存储在返回的字符串ArrayList中。

import java.util.ArrayList;

public class LibraryDrive {

public static void main(String[] args) {

    String[] titles = { "The Hobbit", "Acer Dumpling", "A Christmas Carol",
            "Marley and Me", "Building Java Programs",
    "Java, How to Program" };

    String[] allAuthors = { "Tolkien, J.R.", "Doofus, Robert",
            "Dickens, Charles", "Remember, SomeoneIdont",
            "Reges, Stuart*Stepp, Marty", "Deitel, Paul*Deitel, Harvery" };

    ArrayList<String> authors = new ArrayList<String>();
    ArrayList<Book> books = new ArrayList<Book>();

    for (int i = 0; i < titles.length; i++) {
        authors = getAuthors(allAuthors[i]);
        Book b = new Book(titles[i], authors);
        books.add(b);
        authors.remove(0);
    }
    Library lib = new Library(books);
    System.out.println(lib);
    lib.sort();
    System.out.println(lib);

}

private static ArrayList<String> getAuthors(String authors) {
    ArrayList books = new ArrayList<String>();
            // need help here.
    return books;
}

}

5 个答案:

答案 0 :(得分:4)

试试这个

private static ArrayList<String> getAuthors(String authors) {
    ArrayList books = new ArrayList<String>();
      String[] splitStr = authors.split("\\*");
      for (int i=0;i<splitStr.length;i++) {
        books.add(splitStr[i]);
       }
    return books;
}

答案 1 :(得分:1)

尝试这个,但实际上我不明白为什么你在for循环中删除ArrayList的零索引元素。

private static ArrayList<String> getAuthors(String authors) {
    ArrayList<String> array = new ArrayList<String>();
    String[] authorsArray = authors.split("\\*");
    for(String names : authorsArray );
        array.add(names);
    return array;
}

答案 2 :(得分:1)

我建议在这里使用String.split(但请记住,此方法使用正则表达式作为参数):

private static ArrayList<String> getAuthors(String authors) {
    ArrayList books = new ArrayList<String>();
    String[] strgArray = authors.split("\\*"); 
    books.addAll(Arrays.asList(strgArray));
    return books;
}

private static ArrayList<String> getAuthors(String authors) {
    String[] strgArray = authors.split("\\*"); 
    ArrayList books = Arrays.asList(strgArray);
    return books;
}

答案 3 :(得分:0)

看看String#split方法,这将帮助您通过星号分隔作者。此方法返回一个数组,因此您需要检查此数组中有多少作者,然后将每个作者存储到ArrayList中。

答案 4 :(得分:0)

以下是您可以这样做的方法。

  1. 根据星号符号将您获得的authors字符串拆分为方法参数。 (使用String.split(delim)方法)
  2. 需要使用for循环迭代生成的string []数组,并且应将每个迭代元素添加到列表中。 (使用List.add(elem)方法)
  3. 完成后,返回该列表(您已经在那里)。
  4. 现在你知道怎么做了,你需要自己实现代码。