java List 속성 별로 도구 클래스 나 누 기
3251 단어 자바 도구
package com.iflytek.bim.dms.common.core.util;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author xghuang
* @date 2018/6/22
* @time 13:23
* @desc:
*/
public class GroupUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(GroupUtil.class);
/**
* List V methodName ( K ) , Map>
* method V , K
*
* @param list
* @param map map
* @param clazz V
* @param methodName
*/
public static void listGroup2Map(List list, Map> map, Class clazz, String methodName) {
//
if (null == list || null == map || null == clazz || StringUtils.isBlank(methodName)) {
LOGGER.error("CommonUtils.listGroup2Map ,list:" + list + " ;map:" + map
+ " ;clazz:" + clazz + " ;methodName:" + methodName);
return;
}
//
Method method = getMethodByName(clazz, methodName);
//
if (null == method) {
return;
}
//
listGroup2Map(list, map, method);
}
/**
* List V ( K ) , Map>
* method V , K
*
* @param list
* @param map map
* @param method
*/
@SuppressWarnings("unchecked")
private static void listGroup2Map(List list, Map> map, Method method) {
//
if (null == list || null == map || null == method) {
LOGGER.error("CommonUtils.listGroup2Map ,list:" + list + " ;map:" + map
+ " ;method:" + method);
return;
}
try {
//
Object key;
List listTmp;
for (V val : list) {
key = method.invoke(val);
listTmp = map.get(key);
if (null == listTmp) {
listTmp = new ArrayList();
map.put((K) key, listTmp);
}
listTmp.add(val);
}
} catch (Exception e) {
LOGGER.error(" !", e);
}
}
/**
* ,
*
* @param clazz
* @param methodName
* @return
*/
private static Method getMethodByName(Class> clazz, String methodName) {
Method method = null;
//
if (null == clazz || StringUtils.isBlank(methodName)) {
LOGGER.error("CommonUtils.getMethodByName ,clazz:" + clazz + " ;methodName:"
+ methodName);
return method;
}
try {
method = clazz.getDeclaredMethod(methodName);
} catch (Exception e) {
LOGGER.error(" !", e);
}
return method;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 양력 전 음력 도구 류자바 양력 이 음력 으로 바 뀌 는 도구 류 인터넷 에는 많은 것들 이 있 습 니 다. 대체적으로 같은 소스 코드 에서 나 왔 지만 이런 소스 코드 는 프로젝트 요 구 를 만족 시 키 지 못 하고 시간 을 제공 하 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.