중 영문 혼합 이니셜 순 으로 정렬
3415 단어 Java
제3자 가방 을 사 용 했 습 니 다.
com.belerweb
pinyin4j
2.5.1
세 가지 방법 을 봉 했다.list, map 의 key, map 의 value 에 따라 정렬 할 수 있 습 니 다.반환 형식 은 입력 과 일치 합 니 다.
import net.sourceforge.pinyin4j.PinyinHelper;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class SortByChineseUtil {
public static List sort(List list) {
return sortByChinese(list);
}
public static Map sortByKey(Map map) {
ArrayList list = new ArrayList(map.keySet());
List sortList = sortByChinese(list);
LinkedHashMap result = new LinkedHashMap();
for (String str : sortList) {
result.put(str, map.get(str));
}
return result;
}
public static Map sortByValue(Map map) {
List list = new ArrayList(map.values());
List sortList = sortByChinese(list);
LinkedHashMap result = new LinkedHashMap();
for (String str : sortList) {
result.put(getKey(map, str), str);
}
return result;
}
private static String getKey(Map map, String value) {
for (Object key : map.keySet()) {
if (map.get(key).equals(value)) {
return key.toString();
}
}
return null;
}
/**
* ,
* , 。
*
* @param list
* @return
*/
private static List sortByChinese(List list) {
TreeMap map = new TreeMap();
String[] s = new String[list.size()];
for (String str : list) {
char[] chars = str.toCharArray();
if (Character.toString(chars[0]).matches("[\\u4E00-\\u9FA5]+")) {
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(chars[0]);
map.put(setMapKey(map,Character.toString(pinyinArray[0].charAt(0))), str);
} else if (Character.toString(chars[0]).matches("[a-zA-Z]+")) {
map.put(setMapKey(map,Character.toString(chars[0]).toLowerCase()), str);
} else {
map.put(setMapKey(map,Character.toString(chars[0])), str);
}
}
List result = new ArrayList(map.values());
return result;
}
/**
* key
*/
private static String setMapKey(TreeMap map,String key){
if(map.get(key) == null){
return key;
}else{
return key + key;
}
}
}
테스트
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("2"," ");
map.put("3"," ");
map.put(1," ");
map.put(77,"IT ");
map.put(8,"it");
map.put(99,",");
System.out.println(SortByChineseUtil.sortByValue(map));
}
테스트 결과
{99=,, 8=it, 77=IT , 3= , 2= , 1= }
, 0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.