Java 如何对LinkedList进行排序<;FileInfo>;按姓名和日期?
我不知道如何用fileinfo对Linkedlist进行排序,下面的代码显示了“构建内容”的过程Java 如何对LinkedList进行排序<;FileInfo>;按姓名和日期?,java,Java,我不知道如何用fileinfo对Linkedlist进行排序,下面的代码显示了“构建内容”的过程 private void ReloadScanFiles(){ 如果(gsfCurRow!=null){ ArrayList newTreeFileInfoList=新的ArrayList(); ArrayList AddTreeFileInfo=新建ArrayList(); ArrayList delTreeFileNameList=新的ArrayList(); ///////链表 LinkedL
private void ReloadScanFiles(){
如果(gsfCurRow!=null){
ArrayList newTreeFileInfoList=新的ArrayList();
ArrayList AddTreeFileInfo=新建ArrayList();
ArrayList delTreeFileNameList=新的ArrayList();
///////链表
LinkedList newTreeFileInfoLinkedList=新建LinkedList();
LinkedList AddTreeFileInfo LinkedList=新建LinkedList();
LinkedList delTreeFileNameLinkedList=新建LinkedList();
文件夹=新文件(gsfCurRow.DOC\u源路径);
FileFilter FileFilter=newfilefilter(){
公共布尔接受(文件){
return!file.isDirectory()&&!file.ishiden();
}
};
/*
FilenameFilter fileFilter=newfilenamefilter(){
公共布尔接受(文件目录,字符串名称){
返回name.toLowerCase().endsWith(“.pdf”)||
name.toLowerCase().endsWith(“.jpeg”)||
name.toLowerCase().endsWith(“.jpg”)||
name.toLowerCase().endsWith(“.tiff”)||
name.toLowerCase().endsWith(“.txt”);
}
};
*/
File[]listOfFiles=folder.listFiles(fileFilter);
for(int i=0;i
您可以在下图中看到输出:
我需要根据它们的名称或日期对这些项目进行排序,我在考虑将侦听器放在两个列meno-表示名称,datum-表示日期。我如何实现这一点?如何实现
private void ReloadScanFiles() {
if (gsfCurRow != null) {
ArrayList<FileInfo> newTreeFileInfoList = new ArrayList<FileInfo>();
ArrayList<FileInfo> addTreeFileInfoList = new ArrayList<FileInfo>();
ArrayList<String> delTreeFileNameList = new ArrayList<String>();
/////// linked list
LinkedList<FileInfo> newTreeFileInfoLinkedList = new LinkedList<FileInfo>();
LinkedList<FileInfo> addTreeFileInfoLinkedList = new LinkedList<FileInfo>();
LinkedList<String> delTreeFileNameLinkedList = new LinkedList<String>();
File folder = new File(gsfCurRow.DOC_SOURCE_PATH);
FileFilter fileFilter = new FileFilter() {
public boolean accept(File file) {
return !file.isDirectory() && !file.isHidden();
}
};
/*
FilenameFilter fileFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".pdf") ||
name.toLowerCase().endsWith(".jpeg") ||
name.toLowerCase().endsWith(".jpg") ||
name.toLowerCase().endsWith(".tiff") ||
name.toLowerCase().endsWith(".txt");
}
};
*/
File[] listOfFiles = folder.listFiles(fileFilter);
for (int i = 0; i < listOfFiles.length; i++){
FileInfo fileInfo = new FileInfo();
fileInfo.Name = listOfFiles[i].getName();
//fileInfo.Length = (long) listOfFiles[i].length();
fileInfo.LastModified = (long) listOfFiles[i].lastModified(); //Long.parseLong("473", 10);
//newTreeFileInfoLinkedList.add(fileInfo);
newTreeFileInfoLinkedList.add(fileInfo);
}
//add new items
for (FileInfo fileInfo: newTreeFileInfoLinkedList){
//for (FileInfo fileInfo: newTreeFileInfoLinkedList){
boolean existsItem = false;
if (actTreeFileInfoLinkdList != null){
for (FileInfo fileInfo1: actTreeFileInfoLinkdList){
if (fileInfo.Name.equals(fileInfo1.Name)) {
existsItem = true;
break;
}
}
}
if (!existsItem) {
//addTreeFileInfoLinkedList.add(fileInfo);
addTreeFileInfoLinkedList.add(fileInfo);
}
}
//delete non existing items
if (actTreeFileInfoLinkdList != null){
for (FileInfo fileInfo: actTreeFileInfoLinkdList){
boolean existsItem = false;
for (FileInfo fileInfo1: newTreeFileInfoLinkedList){
if (fileInfo.Name.equals(fileInfo1.Name)) {
existsItem = true;
break;
}
}
if (!existsItem) {
//delTreeFileNameLinkedList.add(fileInfo);
delTreeFileNameLinkedList.add(fileInfo.Name);
}
}
}
actTreeFileInfoLinkdList = newTreeFileInfoLinkedList;
//add items to tree
for (FileInfo fileInfo: addTreeFileInfoLinkedList){
TreeItem item = new TreeItem(tv, SWT.NONE);
//item.setText(new String[] {fileInfo.Name, Long.toString(fileInfo.Length), df.format(fileInfo.LastModified)});
item.setText(new String[] {fileInfo.Name, null, df.format(fileInfo.LastModified)});
fileCount ++;
}
//delete item from tree
//update locked by
TreeItem [] items = tv.getItems();
for (TreeItem item: items){
//delete
if (delTreeFileNameLinkedList.contains(item.getText())) {
if (item.getChecked()) {
checkedFileCount --;
}
fileCount --;
item.dispose();
}
//update
if (!item.isDisposed()){
Integer lock_idusr = null;
try {
lock_idusr = db.FileLockedBy(gsfCurRow.DOC_SOURCE_ID, item.getText());
} catch (SQLException e) {
e.printStackTrace();
}
if ((lock_idusr != null) && (!lock_idusr.equals(idusr))){
try {
item.setText(3, db.GetOpid(lock_idusr));
} catch (SQLException e) {
e.printStackTrace();
}
Color color = new Color(display,180, 0, 0);
item.setForeground(color);
item.setChecked(false);
}
else{
item.setText(3, "");
Color color = new Color(display,0, 0, 0);
item.setForeground(color);
}
}
}
//sort linked list files
//actTreeFileInfoLinkdList
BtnDocAssignEnabled();
GenerateTreeStatusText();
}
}
Collections.sort(newTreeFileInfoLinkedList, (f1, f2) -> {
return f1.Name.compareTo(f2.Name);
});