进阶java大师之路,泛型在hashmap上的灵活运用

由于,公司的试用的框架上,存在大量的hashmap的创建,产生大量的I/O 以及内存的消耗,所以,抽了点时间,看书 effective java 这本书。


同时,也从项目的作者 framework 上学习 ,吸取 ,最终写出了,符合生产的方案。


存在的问题是,一直困惑与hashmap的清除。


package com.framework.entity.factory;

import java.util.HashMap;

import org.apache.poi.ss.formula.functions.T;
import org.apache.tools.ant.types.resources.selectors.InstanceOf;

import com.framework.entity.CompanyFormMap;
import com.framework.entity.base.FormMap;

public class FrommapFactory {
	private static HashMap, ? extends FormMap > hashMap=new  HashMap<>();
	
	
	@SuppressWarnings({ "hiding", "unchecked" })
	public static  T getFromBeanMap(Class> type) {
		// TODO Auto-generated method stub
		if (hashMap.containsKey(type)) {
			FormMap t=hashMap.get(type);
			t.clear();
			return (T)t;
		}else {
			
			Object object = null;
			try {
				System.out.println(type.getSimpleName());
				object = Class.forName(type.getName());
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return (T) object;
		}
	}
	
	private static HashMap hashMap2=new  HashMap<>();
	@SuppressWarnings("hiding")
	public static > T getFromBeanMap2(T t) {
		t.clear();
		FormMap formMap = (FormMap) t;
		
		
		
		return t;
	}
	
	
	
	private static HashMap hashMap3=new  HashMap<>();
	@SuppressWarnings({ "unchecked", "hiding" })
	public static  T getBeanFormMap(Class clazz) throws InstantiationException, IllegalAccessException{
		if (hashMap3.containsKey(clazz)) {
			FormMap formMap = (FormMap) hashMap3.get(clazz);
			T t=(T) hashMap3.get(clazz);
			formMap.clear();
			return t;
		}else {
			T t=clazz.newInstance();
			return t;
		}
	}
	
	
	
	public static void main(String[] args) throws InstantiationException, IllegalAccessException {
		CompanyFormMap companyFormMap=getBeanFormMap(CompanyFormMap.class);
		System.out.println(companyFormMap);
	}
}


前面第一个,是看书之后的结果。

有错误。

估计就是class 与 map ,不能有效的相互转换,或者转换太多。


最后一个就是符合方案的产品了。


其实还是可以优化的,


就是利用 T extends ?


不过,我没有测试。觉得麻烦。


大道至简。



2.0补充

// Json生成Map,2.0 ,破解了复杂,list,树
@SuppressWarnings("unchecked")
public static Map jsonToMap(String jsonString) throws JSONException {
// JSONObject必须以"{"开头
JSONObject jsonObject = JSONObject.fromObject(jsonString);
Map resultMap = new HashMap();
Iterator iter = jsonObject.keys();
String key = null;
Object value = null;
while (iter.hasNext()) {
key = iter.next();
value = jsonObject.get(key);
if (value.getClass() == JSONArray.class) {
JSONArray jsonArray = JSONArray.fromObject(value);
for (Object list : jsonArray) {
Map resultMap2 = jsonToMap(list.toString());
resultMap.put(key, resultMap2);
}
} else {
resultMap.put(key, value);
}
}
// System.out.println(resultMap);
/*
* 打印结果{map={"sex":"female","age":"23","name":"Alexia"},
* employ={"sex":"female","age":"24","name":"wjl"}}
*/
return resultMap;
}


// Json生成Map,2.0 ,破解了复杂,list,树
@SuppressWarnings("unchecked")
public static > T  jsonToMap(String jsonString,Class clazz) throws JSONException, InstantiationException, IllegalAccessException {
// JSONObject必须以"{"开头
JSONObject jsonObject = JSONObject.fromObject(jsonString);
T t=clazz.newInstance();
Iterator iter = jsonObject.keys();
String key = null;
Object value = null;
while (iter.hasNext()) {
key = iter.next();
value = jsonObject.get(key);
if (value.getClass() == JSONArray.class) {
JSONArray jsonArray = JSONArray.fromObject(value);
for (Object list : jsonArray) {
Map resultMap2 = jsonToMap(list.toString());
t.put(key, resultMap2);
}
} else {
t.put(key, value);
}
}
// System.out.println(resultMap);
/*
* 打印结果{map={"sex":"female","age":"23","name":"Alexia"},
* employ={"sex":"female","age":"24","name":"wjl"}}
*/
return t;
}



你可能感兴趣的:(java)