gpt4 book ai didi

java - 制作链接目录

转载 作者:行者123 更新时间:2023-11-29 14:43:11 25 4
gpt4 key购买 nike

我有一个类,它提取 id、名称和(如果需要)父 ID,它将它们转换为对象,然后链接它们。

如果你仔细看最后,你会看到我现在正在尝试修复的问题,文件夹对象知道它们是否有子对象和/或父对象,但如果我在这里运行 mkDirs() ,它只会适用于两个级别(根、子文件夹),但如果有多个级别(根/folder1/folder1),则它将不起作用。

知道如何解决这个问题吗?

package stable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
public class Loop {

public static void main(String[] args) {
int PID = 0;

int RepoID = 1;
Connection con = null;
String url = "jdbc:mysql://localhost/document_manager";
String user = "root";
String password = "Pa55w0rd";
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
Map<Integer,Folder> data = new HashMap<Integer,Folder>();
while( PID < 50 )
{
try {
Statement st = con.createStatement();
ResultSet result = st.executeQuery("SELECT name, category_id, parent_id FROM categories WHERE parent_id = '"+PID+"' AND repository_id = '"+RepoID+"'");
while (result.next ())
{
String FolderName = result.getString ("name");
String FolderId = result.getString ("category_id");
String ParentId = result.getString ("parent_id");
int intFolderId = Integer.parseInt(FolderId);
int intParentId = Integer.parseInt(ParentId);
System.out.println( FolderId+" "+FolderName+" "+ParentId );
Folder newFolder = new Folder(FolderName, intFolderId, intParentId);
data.put(newFolder.getId(), newFolder);
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
PID++;
}
for(Folder folder : data.values()) {
int parentId = folder.getParentFolderId();
Folder parentFolder = data.get(parentId);
if(parentFolder != null)
parentFolder.addChildFolder(folder);
//Added
System.out.print("\n"+folder.getName());
if(parentFolder != null)
System.out.print(" IS INSIDE "+parentFolder.getName());
else
System.out.print(" HAS NO PARENT!");

}
}
}

最佳答案

看起来您可以/应该将目录创建逻辑分解为自己的函数,然后使其递归。这应该使您能够创建“无限”深度目录层次结构。

旁注:在循环中重复进行数据库调用效率极低。尝试单个选择,然后循环遍历结果。如果需要,您可以使用 SQL 的“IN”运算符来过滤结果: http://www.w3schools.com/sql/sql_in.asp

关于java - 制作链接目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com