`
zyslovely
  • 浏览: 231515 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用反射机制将 list转为map

 
阅读更多
public static void main(String[] args) {
		List<Profile> profileList = new ArrayList<Profile>(100000);
		for (int i = 0; i < 100000; i++) {
			Profile profile = new Profile();
			profile.setUserId(i);
			profile.setUserName("zystest1");
			profileList.add(profile);
		}
		long time1 = new Date().getTime();
		Map<Long, Profile> pMap = new HashMap<Long, Profile>(100000);
		for (Profile profile : profileList) {
			pMap.put(profile.getUserId(), profile);
		}
		long time2 = new Date().getTime();
		System.out.println((time2 - time1));
	}

10W个数据,消耗时间为88ms

public static void main(String[] args) {
		List<Profile> profileList = new ArrayList<Profile>(100000);
		for (int i = 0; i < 100000; i++) {
			Profile profile = new Profile();
			profile.setUserId(i);
			profile.setUserName("zystest1");
			profileList.add(profile);
		}
		long time1 = new Date().getTime();
		Map<Long, Profile> pMap = new HashMap<Long, Profile>(100000);
		try {
			pMap = Test.ListToMap(profileList, "getUserId", Profile.class,
					100000);
		} catch (Exception e) {
			e.printStackTrace();
		}
		long time2 = new Date().getTime();
		System.out.println((time2 - time1));
	}

	public static <T> Map<Long, T> ListToMap(List<T> objects,
			String methodName, Class class1, int initSize) {
		Map<Long, T> pMap = new HashMap<Long, T>(initSize);
		try {
			Method method = class1.getMethod(methodName);
			for (T t : objects) {
				Long long1 = (Long) method.invoke(t);
				pMap.put(long1, t);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return pMap;
	}

使用反射机制做listToMap,耗时98ms

总体来说,只要不循环定义method,效率还是比较高的
分享到:
评论

相关推荐

    将List集合中的map对象转为List&lt;对象&gt;形式实例代码

    将List集合中的map对象转为List&lt;对象&gt;形式需要使用Java的反射机制和BeanUtils工具类。 下面是将List集合中的map对象转为List&lt;对象&gt;形式的实例代码: 首先,需要定义一个EntityBean类,该类中包含了两个方法:parse...

    map 和 bean 之间的转换

    map 和 bean 之间的转换,可以利用反射的原理实现

    Java笔记word.docx

    String类型转为Map集合 如果字符串是以键值对的形式存储的JSON数据,可以使用Gson库将其转换为`Map`对象。 **示例**: ```java String json = "{\"remain\":463,\"success\":1}"; Gson gson = new Gson(); Map, ...

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    在进行JSON与Java对象互转时,需要注意的是,Java对象的属性必须有对应的getter和setter方法,因为`JSONObject`依赖于Java的反射机制来读取和设置属性。此外,`JSONObject`在处理枚举类型时可能需要特别处理,通常会...

    BeanUtils开发包

    当JavaBean对象中包含List或Map等集合属性时,可以使用`populate()`方法将Map对象中的键值对填充到JavaBean对象中,实现了将复杂数据结构转换为JavaBean的过程。 在使用BeanUtils时,需要注意的是,由于它依赖于...

    java面试宝典梳理大纲最终-赵学浦.docx

    - **List、Map和Set的区别**:List是有序的、可重复的集合,Map是键值对的集合,Set是不包含重复元素的集合。 以上只是Java面试中的一部分常见问题,全面准备还需要深入学习异常处理、IO流、多线程、网络编程、...

    fastjson-1.2.7.jar

    - **JSON到Java对象**:通过`JSON.parseObject()`或`JSON.parseArray()`方法,可以将JSON字符串转化为Java的Map、List或自定义对象。 - **Java对象到JSON**:`Object.toJSONString()`或`JSON.toJSONString(Object)...

    JAVA第一阶段.pdf

    8. **集合框架**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现。线程安全的集合有Vector和Hashtable,而Collections工具类可将非线程安全集合转为...

    Java ppt 共享

    - **解释型语言**: 如Python,运行时需要解释器将其转为机器码。 #### 三、Java开发工具 - **JDK (Java Development Kit)**: - 包含Java编译器、调试器和其他工具,支持Java应用程序的开发。 - **JRE (Java ...

    BTA 常问的 Java基础39道常见面试题及详细答案.docx

    26. **反射机制**: 反射允许程序在运行时动态获取类的信息(如类名、属性、方法)并调用。 27. **泛型**: 泛型提供类型安全,减少类型转换,提高代码可读性。 28. **XML解析**: DOM解析一次性加载整个XML...

    JAVA面试题全集

    - 将 GB2312 编码的字符串转换为 ISO-8859-1 编码:使用 `String.getBytes("GB2312")` 转为字节数组,然后使用 `new String(bytes, "ISO-8859-1")` 转换回字符串。 9. **Java中访问数据库** - 使用 JDBC 连接...

Global site tag (gtag.js) - Google Analytics