替换类型数据结构的arraylist中的值

时间:2012-10-18 19:17:02

标签: java arraylist

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

我的arraylist:

ArrayList<FileNameData> fileData;

FileNameData类:

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方法?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

如果你知道旧文件的索引,那就很简单了:

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

您可以使用indexOfArrayList方法。为此,必须正确实现FileData对象的equalshashcode。假设文件名唯一标识文件:

在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);

答案 2 :(得分: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;
    }
}

因此,您需要找到一种方法来获取当前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
}