gpt4 book ai didi

java - 如何根据值对 map 进行排序

转载 作者:行者123 更新时间:2023-12-01 14:09:18 24 4
gpt4 key购买 nike

我正在尝试将 bundle 名称及其最新版本存储在 map 中。

下面是我的newDirs这是一个 ArrayList<Map<String, String>>()我应该从中获取 bundle 名称及其最新版本-

[{objectName=/storage/Model/Framework/1.0.0/, objectId=4fa042a5a56c861104fa05c246cf850522a2354ca223, objectType=DIRECTORY}, 
{objectName=/storage/Model/Framework/1.0.1/, objectId=4fa042a5a66c860d04fa056bbe1cf50522a14094ca3f, objectType=DIRECTORY}]

现在,从上面的列表中,我应该提取最新版本的 Framework bundle 。所以在上面的例子中,它是1.0.1 version bundle 名称为 Framework 。所以我的 map 将存储 Framework作为 key 和 1.0.1作为上述情况下 bundle 的版本。

下面是我的代码-

final List<Map<String, String>> newDirs = new ArrayList<Map<String, String>>();

for(String ss : list) {

//some code here for newDirs

Map<String, String> map = storageDirectorySort(newDirs);
System.out.println(map);
}

/**
* Sort the list and then return the map as the Bundle Name and its Latest version
*
*/
private static Map<String, String> storageDirectorySort(List<Map<String, String>> newDirs) {

Map<String, String> map = new LinkedHashMap<String, String>();

// do the sorting here and always give back the latest version of the bundle and its name

return map;
}

任何人都可以帮我解决这个问题吗?我不确定这样做的最佳方法是什么?

最佳答案

您需要另一个辅助方法来帮助解析版本号。然后在 storageDirectorySort 方法中调用它:

    private static int getVersion(Map<String, String> dir) {
String objectName = dir.get("objectName");
// Get the various parts of the name
String[] nameParts = objectName.split("/");
// Get the version from the nameParts
String[] versionString = nameParts[nameParts.length - 1].split("\\.");
// Parse version String into an int
return (Integer.valueOf(versionString[0]) * 1000000)
+ (Integer.valueOf(versionString[1]) * 10000)
+ (Integer.valueOf(versionString[2]) * 100);
}

private static Map<String, String> storageDirectorySort(
List<Map<String, String>> newDirs) {

Map<String, String> latestVersion = null;
for (Map<String, String> bundle : newDirs) {
int version = getVersion(bundle);
if (latestVersion == null || version > getVersion(latestVersion)) {
latestVersion = bundle;
}
}

return latestVersion;
}

注意:此代码中没有异常处理,我建议添加一些异常处理。除此之外,我还对其进行了测试以验证其是否有效。

关于java - 如何根据值对 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666182/

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