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
相关产品推荐
相关产品推荐

