You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将方法类拼接列表转为类到方法列表的Map

解决方案:将方法-类拼接列表转换为类到方法列表的Map

没问题,这事儿不难办!我给你用两种常用语言(Python和Java)写实现逻辑,你直接参考就行~

Python 实现

基础写法

先从最直观的逻辑入手,手动判断类名是否存在于字典中:

# 示例输入列表
method_class_list = ["method1#class1", "method2#class1", "method3#class2", "method4#class2"]

# 初始化空的Map(Python中用字典实现)
class_method_map = {}

for item in method_class_list:
    # 分割方法名和类名,注意顺序是「方法名#类名」
    method_name, class_name = item.split('#')
    # 如果类名不在Map里,先创建一个空列表
    if class_name not in class_method_map:
        class_method_map[class_name] = []
    # 将方法名添加到对应类的列表中
    class_method_map[class_name].append(method_name)

print(class_method_map)
# 输出结果: {'class1': ['method1', 'method2'], 'class2': ['method3', 'method4']}

简洁写法(使用collections.defaultdict)

如果想省略“判断类名是否存在”的步骤,可以用defaultdict自动初始化列表:

from collections import defaultdict

method_class_list = ["method1#class1", "method2#class1", "method3#class2", "method4#class2"]
class_method_map = defaultdict(list)

for item in method_class_list:
    method_name, class_name = item.split('#')
    class_method_map[class_name].append(method_name)

# 可选:转成普通字典(如果不需要defaultdict的特性)
class_method_map = dict(class_method_map)

Java 实现

Java中用HashMap来实现Map,推荐用computeIfAbsent方法简化逻辑:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MethodClassMapper {
    public static void main(String[] args) {
        // 示例输入列表
        List<String> methodClassList = List.of("method1#class1", "method2#class1", "method3#class2", "method4#class2");
        
        // 初始化Map
        Map<String, List<String>> classMethodMap = new HashMap<>();
        
        for (String item : methodClassList) {
            // 分割方法名和类名,同时处理格式错误的情况
            String[] parts = item.split("#");
            if (parts.length != 2) {
                // 可以根据业务需求调整:比如跳过无效项、打印日志或抛出异常
                continue;
            }
            String methodName = parts[0];
            String className = parts[1];
            
            // 用computeIfAbsent自动创建列表,省去手动判断
            classMethodMap.computeIfAbsent(className, k -> new ArrayList<>()).add(methodName);
        }
        
        // 输出结果
        System.out.println(classMethodMap);
        // 输出: {class1=[method1, method2], class2=[method3, method4]}
    }
}

注意事项

  • 格式异常处理:如果输入列表中存在没有#或者有多个#的元素,建议添加判断逻辑(比如示例中的continue),避免程序报错。
  • 去重需求:如果同一个类下可能出现重复的方法名,你可以把List换成Set,最后再转成List(如果需要列表格式)。

内容的提问来源于stack exchange,提问作者Arjs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:35:44