Java 二维数据结构的比较-简化和更快?
如何简化和加快以下代码 这是二维数据结构的比较。多个文件夹,每个文件夹包含文件,与其他文件夹相比Java 二维数据结构的比较-简化和更快?,java,algorithm,performance,Java,Algorithm,Performance,如何简化和加快以下代码 这是二维数据结构的比较。多个文件夹,每个文件夹包含文件,与其他文件夹相比 ArrayList<FolderGroup> userFolders = CommonFunctions.getUserFolders(); if (!userFolders.isEmpty()) { for (FolderGroup userFoldersGroup : userFolders) { for (FolderGroup publicFoldersG
ArrayList<FolderGroup> userFolders = CommonFunctions.getUserFolders();
if (!userFolders.isEmpty()) {
for (FolderGroup userFoldersGroup : userFolders) {
for (FolderGroup publicFoldersGroup : publicGroupsList) {
if (userFoldersGroup.getName().equals(publicFoldersGroup.getName())) {
for (File publicFile : publicFoldersGroup.getFiles()) {
for (File userFile : userFoldersGroup.getFiles()) {
if (publicFile.contains(userFile)) {
publicFile.setIsDownloaded(true);
userFoldersGroup.setDownloadedCount();
}
}
}
}
}
}
}
ArrayList userFolders=CommonFunctions.getUserFolders();
如果(!userFolders.isEmpty()){
用于(FolderGroup用户FoldersGroup:userFolders){
对于(FolderGroup publicFoldersGroup:publicGroupsList){
if(userFoldersGroup.getName().equals(publicFoldersGroup.getName())){
对于(文件publicFile:publicFoldersGroup.getFiles()){
对于(文件userFile:userFoldersGroup.getFiles()){
if(publicFile.contains(userFile)){
publicFile.setisdownload(true);
userFoldersGroup.setDownloadedCount();
}
}
}
}
}
}
}
如果则最外面的无效,因为不管怎样,当用户文件夹
为空时,最外面的循环将立即终止而不进行迭代
除此之外,我不认为总体复杂性可以降低。但是,通过提取具有有意义名称的方法,可以使代码更易于理解
要获得更高的速度,可以做的是使用允许使用更少嵌套循环的数据结构。例如,如果可以按文件夹组名称查询另一个文件夹组集合,则只需迭代其中一个文件夹组集合。标准库附带了一些允许此类查询并实现()的集合类。您实际上想做什么?您想检查\查找什么?为什么此代码不充分?你用过档案器吗?我比较文件夹中的文件。检查两个不同文件夹中是否存在相同的文件。同时我有两个文件夹数组。@durron597这就足够了,但我想要一个更优雅的解决方案。为什么你想要一个更优雅的解决方案?是否存在实际性能问题?是为了美学吗?您是否发现嵌套循环在某种程度上无法维护?我真正想说的是,除非你给我们一个具体的问题来解决,否则很难帮助你改进代码。