这可能是一个非常简单的问题,但我仍然会问。
我的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();
我知道设置方法需要索引和新值,但是我不确定如何进入集合内的setFilename方法?
如果我让您正确,则要修改存储在位置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);
}
如果要从arraylist获取特定文件并更改文件的名称,则需要从列表中获取正确的元素。
如果您知道旧文件的索引,则非常简单:
file = list.get(index);
file.setName(newName);
您可以使用ArrayList
的indexOf
方法。为此,必须正确实现FileData
对象的equals
和hashcode
。假设文件的名称唯一地标识一个文件:
在Fifata类中
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);
如果我正确理解您,您有两个类似的类:
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
}