我的ListUtil

一,list  並集,交集,差集,無重複並集

		  List list1 =new ArrayList();
		  list1.add("1111");
		  list1.add("2222");
		  list1.add("3333");
		  
		  List list2 =new ArrayList();
		  list2.add("3333");
		  list2.add("4444");
		  list2.add("5555"); 
		  //並集
//		  list1.addAll(list2);
//		  System.out.println(list1);//[1111, 2222, 3333, 3333, 4444, 5555]
		  //交集
//		  list1.retainAll(list2); System.out.println(list1);//[3333]
		  //差集
//		  list1.removeAll(list2); System.out.println(list1);//[1111, 2222]
		  //無重複並集
		  list2.removeAll(list1); System.out.println(list2);//[4444, 5555]
		  list1.addAll(list2); System.out.println(list1);//[1111, 2222, 3333, 4444, 5555]

二,比較器j8

/**
 * 排序按中文的首字母
 * 把中文.符號.數字轉爲字母排序
 * @param li
 * @return
 */	
public static List<JSONObject> getSortList(List<JSONObject> li) {
	 Collections.sort(li,(JSONObject o1,JSONObject o2)-> Collator.getInstance(Locale.CHINA).compare(o1.getString("name"),o2.getString("name"));	
	 return li;
}

三,簡易輸出J8

 li.forEach((JSONObject t)->System.out.println(t.getString("name")));

四,list 轉字符串

public static String listToString(List list, String separator) { 
		  return org.apache.commons.lang.StringUtils.join(list.toArray(),separator); 
}

equalsIgnoreCase  和 equals的區別
equalsIgnoreCase  可以忽略英文字符大小寫比較兩個字符串

public static boolean ignoreCaseEquals(String str1,String str2){
		  return str1 == null ? str2 == null :str1.equalsIgnoreCase(str2);
}

五,把數組轉化爲可操作的List

public static <E>  List<E> transferArrayToList(E[] array){
        List<E> transferedList = new ArrayList<>();
        Arrays.stream(array).forEach(arr -> transferedList.add(arr));
        return transferedList;
}

六,去除list裏的重複數據

/**
 * 去除對象重複數據(根據對象的屬性去重)
 * @param keyExtractor
 * @return
 * 
 */
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> 
        keyExtractor) {
        Map<Object, Boolean> map = new ConcurrentHashMap<>();
        return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}

/**
 * 去除list重複數據
 * @param keyExtractor
 * @return
 * 
 */
public static List<Map<String, String>> listDistinctByKey(List<Map<String, String>> 
         list,String key){
	 return	list.stream().filter(p -> (!p.isEmpty()&&null!=p.get(key)))
		   .filter(distinctByKey(p -> p.get(key)))
		   .collect(Collectors.toList());
}

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章