我有兩種類型的循環,fileList
在這種情況下,僅僅是通過索引擴展AbstractList<Object>
不同類型的for循環
1) For循環迭代的自定義類:
public String getExtensionByDescription(String description)
{
for (int i = 0; i < fileList.size(); i++)
if (description.contains(fileList.get(i).getDescription()))
return fileList.get(i).getExtension();
}
2) For循環按列表中的項目迭代:
public String getExtensionByDescription(String description)
{
for (FileType obj : fileList)
if (description.contains(obj.getDescription()))
return obj.getExtension();
}
方法1)和2)邏輯上相同還是不是?因爲1)返回我期望的值,但方法2)返回錯誤的值。謝謝您的幫助!
與各種其他get方法的列表的實現。
public class FileList extends AbstractList<Object>
{
private ArrayList<FileType> fileList;
public FileList()
{
fileList = new ArrayList<FileType>();
}
public void add(String search, String type, String extension, String description, String htmlicon)
{
FileType data = new FileType(fileList.size(), search, type, extension, description, htmlicon);
if (!fileList.contains(data))
{
fileList.add(data);
}
}
@Override
public Object get(int index)
{
return fileList.toArray()[index];
}
和其他類
public FileType(int index, String search, String type, String extension, String description, String icon)
與功能:
public String getDescription()
{
return description;
}
'AbstractList
爲什麼擴展一個列表類,你可以從頭開始創建一個'ArrayList'? –
我老實說,現在不記得了,有一個原因,我記得它是一個很好的理由,但我現在正在進行30小時的編碼,我不記得了。我只知道我必須擴展它並創建我需要的自定義get方法,否則我找不到FileType值。 – codeCompiler77