这可能是一个非常简单的问题,但我仍然会问它。
我的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方法?
答案 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);
您可以使用indexOf
的ArrayList
方法。为此,必须正确实现FileData
对象的equals
和hashcode
。假设文件名唯一标识文件:
在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
}