需要帮助理解Java中的列表

时间:2017-10-18 06:59:58

标签: java

public class Worksheet {
    private ArrayList<DataEntry> data;
    private String title;

    public Worksheet(String title) {
        data = new ArrayList<DataEntry>();
        this.title = title;
    }

    public ArrayList<DataEntry> getData() {
        return data;
    }

    public String getTitle() {
        return title;
    }

    public Double get(int row, int column) {
        for (DataEntry dataEntry : data) {
            if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
                return dataEntry.getValue();
            }
        }
        return null;
    }

    public void set(int row, int column, double val) {
        boolean isNew = true;
        for (DataEntry dataEntry : data) {
            if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
                dataEntry.setValue(val);
                isNew = false;
            }
        }
        if (isNew) {
            DataEntry newData = new DataEntry(row, column, val);
            data.add(newData);
        }
    }

    public int indexOf(int row, int column) {   
        int result = -1;
        for (DataEntry dataEntry : data) {
            if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {


            }
        }
        return result; //to be completed
    }
}

我接受了这段代码作为我即将到来的考试的练习,我在编写新的编码概念方面非常糟糕。如果有人能够理解代码并为函数 indexOf 提供正确的答案。

我理解用户创建的函数是如何工作的,我只是不能想到要填充这个函数的内容。

indexOf 的描述表明它应该使用给定的行和列返回列表数据中的DataEntry对象的索引,否则如果找不到这样的DataEntry对象则返回-1。

1 个答案:

答案 0 :(得分:1)

为了理解indexOf方法,您需要了解列表的内容;它以定义的顺序表示一系列项目。因此,您知道列表中的哪些项目以及它们的顺序。

例如:你有物品&#34; a&#34;,&#34; b&#34;,&#34; c&#34;在列表中,您知道该列表有三个项目,并且#34; a&#34;是第一项,&#34; b&#34;第二个,&#34; c&#34;第三。如果您想知道例如&#34; b&#34;的位置,您需要扫描或遍历列表并同时计数。当你找到&#34; b&#34;你必须停止计数并返回当前计数。这是indexOf的结果。

只是旁注:当你计算时从0开始 - 这意味着如果第一个元素匹配,indexOf的结果为0,如果第二个元素匹配,则结果为1。如果您没有找到任何通常的东西,则返回-1。

这种逻辑的一种可能的实现可能在你的情况下:

public static int indexOf(int row, int column) {
    int result = -1;
    for (DataEntry dataEntry : data) { // expression used for iteration, or scanning, or pass through the list
        result++; // expression used to increment the counter
        if ((dataEntry.getColumn() == column) && (dataEntry.getRow() == row)) {
            return result; // returns the count if found
        }
    }
    return -1; // returns -1 meaning: the message 'not found'
}