gpt4 book ai didi

java - 有一个版本列表作为文件夹,想要找到最高版本

转载 作者:行者123 更新时间:2023-11-30 04:03:28 27 4
gpt4 key购买 nike

所以,我有代表程序版本的文件夹列表,我想获取最新版本(文件夹旁边有一些垃圾文件!):

0.0.0.256
0.0.1.1
0.0.1.2
0.0.1.5
0.0.1.11
0.0.1.68
0.0.2.1

等等。

如果我只想在这里获取最新版本文件夹,我该如何实现?

目前,我知道版本暂时不会高于0.0.1.x,(以上只是一个例子),所以我可以使用

    for(String name:names)
{

if (name.indexOf("0.0.1")==0)
{


ret = name;
}
}
System.out.println("Current Installed Version Folder: "+ret);

但这不会永远持续下去。我怎样才能编写一些代码,它总是会给我最高的代表性版本号?我现在可以想出一种方法(检查第 0 个字符,然后检查第 2、第 4 个字符,依此类推),但我认为有一种更聪明的方法。有什么快速的想法吗?

最佳答案

这个想法是使用比较器来比较每个字符串(我删除了使用集合的部分):

public static void main(String [] args){
String [] names = { "0.0.1.1",
"1.0.1.1",
"0.0.1.2",
"0.0.1.5",
"0.0.1.11",
"0.0.0.100",
"0.0.0.256",
"0.0.2.1",
"0.0.1.68"};
String maxVersion = names[0];

for(int i = 1; i < names.length; i++){
if(compare(maxVersion, names[i]) == 1)
maxVersion = names[i];
}
System.out.print(maxVersion);
}
static int compare(String a, String b){
String[] sA = a.split("\\.");
String[] sB = b.split("\\.");
for(int i = 0; i < sA.length; i++){
int cmp = Integer.compare(Integer.parseInt(sB[i]), Integer.parseInt(sA[i]));
if(cmp != 0)
return cmp;
}
return 0;
}

哪些输出:

"1.0.1.1"

请注意,这假设每个版本号具有相同的长度,但您可以通过在拆分时检查结果数组的长度来更改此设置。

<小时/>

i got another problem: i got some files next to the Version Folders, so i can't get the names List from File.list()

您可以使用 listFiles 方法提供 FileNameFilter:

File file = new File("/pathToVersionFolders");
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isDirectory();
}
});

现在您只有目录了。如果您只想获取名称,可以使用 list .

关于java - 有一个版本列表作为文件夹,想要找到最高版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384290/

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