当前位置: 首页 > 知识库问答 >
问题:

如何将Stringify方法应用于我的数组列表?

白翰海
2023-03-14

我想把这个应用到我的列表中。当我打印出列表时,它直接从文本文件中出来,这很好。但现在我的目标是确保它说“ID:0”“Title:10 Segundos..”等等。这个列表中有大约100部来自文本文件的电影,所以我只需要使用stringify方法,它在另一个类上。即使当我调用类时,它也不适用于所有列表。

**我不允许编辑电影类**

public class Movie implements Stringify {

    private int id;
    private String title;
    private String genre;
    private int numOfCopies;
    private int copiesOut;

    public Movie(int id, String title, String genre, int numOfCopies, int copiesOut) {
        this.id = id;
        this.title = title;
        this.genre = genre;
        this.numOfCopies = numOfCopies;
        this.copiesOut = copiesOut;
    }
    

    @Override
    public String stringify() {
        return String.format("%d;%s;%s;%d;%d;", id, title, genre, numOfCopies, copiesOut);
    }
}
public interface Stringify {
    String stringify();
}
0
10 Segundos Y A Los Picos
Foreign
3
1

1
3 Salvajes
Foreign
3
2

2
Adventures Of Ozzie & Harriet (Passport Video): Ozzie & Harriet TV Collection
TV Classics
5
4

3
Alice Cooper: Billion Dollar Babies (Audio-Only DVD)
Music
3
1

private void loadMovieList() {

        movies = new MovieList();

        try {
            movies.load(MOVIES_LIST);
        } catch (IOException e) {
            System.out.println("**** COULD NOT READ FILE ****");
        }
    }
  public void load(String fileName) throws IOException {
        String data;
        Scanner fileScan = new Scanner(new File(fileName)).useDelimiter(";");
        List<String> temp = new ArrayList<>();

        while (fileScan.hasNext()) {
            data = fileScan.next();
            temp.add(data);
        }
        fileScan.close();

        String[] tempsArray = temp.toArray(new String[0]);

        for (String str : tempsArray) {
            System.out.println(str);
        }
    }

共有1个答案

微生信鸿
2023-03-14

据我所知,您希望直接从文本文件中读取电影对象列表。如果是,您可以将以下构造函数添加到您的Movie类中:

public Movie(Scanner scanner) {
    this.id = scanner.nextInt();
    this.title = scanner.nextLine();
    this.genre = scanner.nextLine();
    this.numOfCopies = scanner.nextInt();
    this.copiesOut = scanner.nextInt();
}

现在,如果在文本文件中,在电影之间有一个空行,则可以通过以下方式修改load()方法

    List<Movie> movieList = new ArrayList<>();

    while (fileScan.hasNext()) {
        movieList.add(new Movie(fileScan)); // read whole data for single movie
        if (fileScan.hasNext()) {
            fileScan.nextLine(); // skip empty line
        }
    }
 类似资料:
  • 我有这个数据框 我想把它转换成 我知道如何创建一个数据框(与索引)为1列,但不是为多个列 此代码产生此结果 如何修改上面的代码以添加col2(理想情况下使用矢量化而不是迭代)(因此理想情况下我不希望为每一列输入相同的代码)

  • 问题内容: 我有一个数组列表,我想获取数组中元素的笛卡尔积。 我将使用一个示例来使其更加具体… itertools.product似乎可以解决问题,但我只保留了一些细节。 如果我做 我懂了 但是我想要得到的是 我尝试了几种不同的方法: 他们都让我 CP0 代替 CP1 。 有任何想法吗? 提前致谢。 问题答案: 这会将所有对作为单独的参数提供给,然后为您提供它们的笛卡尔积。 您的版本无法正常运行的

  • 怎么办? **添加详细示例如下***

  • 我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误:

  • 假设我有这个命令代码: 我该如何以函数式的方式写这篇文章(就像fold在Scala中做的那样)?

  • 问题内容: 假设我有一个df包含的列。我定义一个函数: 现在,我要应用f到df的两列,以逐元素的计算新列,有点像: 怎么做 ? 如下添加详细样本 * 问题答案: 这是apply在数据框上使用的示例,我正在用进行调用。 请注意,区别在于,与其尝试将两个值传递给该函数f,不如重写该函数以接受pandas Series对象,然后对Series进行索引以获取所需的值。 根据你的用例,有时创建一个对象然后在