1

这可能是一个非常简单的问题,但我仍然会问它。

我的数组列表:

ArrayList<FileNameData> fileData;

文件名数据类:

public FileNameData(TCComponentItemRevision rev, TCComponentDataset selectedDataset, String markUp, String fileName)

设置方法

public void setFileName(String fName) {
   fileName = fName;
}

我正在尝试获取用户输入的文件名并替换数组中已有的文件名。

我创建了以下方法。

public void setFileName(int index, String fName) {
    fileData.set(index, setFileName(fName));
}

我知道获取文件名非常简单

String fName = fileData.get(index).getFileName();

我知道 set 方法需要索引和新值,但我不确定如何访问 set 中的 setFileName 方法?

4

3 回答 3

2

如果我猜对了,那么您想修改存储在位置的对象index

public void setFileName(int index, String fName) {
    fileData.get(index).setFileName(fName);
}

或者,还有更多的行:

public void setFileName(int index, String fName) {
    // get the fileNameData stored at position index
    FileNameData fileNameData = fileData.get(index);

    // set the new filename
    fileNameData.setFileName(fName);
}
于 2012-10-18T19:29:10.203 回答
0

如果我理解正确,你有两个类看起来像这样:

class SomeClass {
    ArrayList<FileNameData> fileData;

    public SomeClass(){
        fileData = new ArrayList<FileNameData>();   
    }
}

class FileNameData {

    String fileName;

    public FileNameData(TCComponentItemRevision rev, TCComponentDataset selectedDataset, String markUp, String fileName){ ... }

    public void setFileName(String fName) { 
        fileName = fName; 
    }

    public String getFileName() { 
        return fileName;
    }
}

因此,您需要找到一种方法来获取存储当前文件名的索引。

获得索引后,您只需执行以下操作(应该在 中完成SomeClass,因此该类将如下所示:

class SomeClass {
    ArrayList<FileNameData> fileData;

    public SomeClass(){
        fileData = new ArrayList<FileNameData>();   
    }

    public void replaceFileNameAtIndex(int index, String fileName){
           fileData.get(index).setFileName(fileName);
    }
}

查找索引的一种方法可能是:

public int findIndexOfFilleName(String fileName){
     for (FileNameData file : fileData)
        if (file.getFileName().equals(fileName))
            return fileData.indexOf(file);
    return -1; //or some other value indicating not found
}
于 2012-10-18T19:36:58.977 回答
0

如果您尝试从 ArrayList 中获取特定文件并更改文件名,则需要从列表中获取正确的元素。

如果您知道旧文件的索引,则相当简单:

file = list.get(index);
file.setName(newName);

可以使用的indexOf方法ArrayList。为此,对象的andequals必须正确实现。假设文件名唯一标识一个文件:hashcodeFileData

在 FileData 类中

public boolean equals(Object other)
{
    return other instanceof FileData 
           && this.getFileName().equals(((FileData)other)getName());
}

public int hashCode()
{
    return this.getFileName().hashCode();
}

然后您可以找到具有给定名称的文件的索引并更新它:

FileData file = new FileData();
file.setName(oldName);
int index = list.indexOf(file);
file = list.get(index);
file.setName(newName);
于 2012-10-18T19:35:28.210 回答