365bet亚洲版登录-bet官网365入口

365bet亚洲版登录拥有超过百间客房,bet官网365入口的文化历经几十年的传承和积淀形成的核心内容获得业界广泛的认可,365bet亚洲版登录是目前信誉最高的娱乐场所,同国内外几百家网上内容供应商建立了合作关系。

boot项目实战之工具篇

汇集操作在web应用开拓中也是很常见的,近些日子也是有部分相比较有利的工具如java.util.Collections、org.apache.commons.collections.CollectionUtils等,然而依照本人集团项目成本中的具体意况提取一套更何用的联谊操作工具类也是很有帮扶的。

1、获取在集结A而不在集合B内的因素

/** * 获取在first集合内而不在second集合内的元素 * @param first * @param second * @return */public static List<String> getDiffList(Collection<String> first, Collection<String> second) { long t = System.currentTimeMillis(); Set<String> sameString = new HashSet<String>; List<String> result = new ArrayList<String>(first.size; for (String s : first) { if (!sameString.contains { result.add; } } if(System.currentTimeMillis() - t > 1){ logger.debug("getDiffList with list first.size={},sencond.size={},use time={}ms",first.size(),second.size(),System.currentTimeMillis; } return result; }
  • 正如重要的点是将second集合调换为set,因为set决断是或不是含有叁个成分时间复杂度是O

2、获得在会集A内同有时间在会集B内的因素

/** * 获得在list内同时在list2内的元素 * 注意:在结果集内并不去重,如果list内本身有重复,返回的结果内可能包含相同元素 * @param list * @param list2 * @return */public static List<String> getSameElements(Collection<String> list, Collection<String> list2) { long t = System.nanoTime(); Set<String> set = new HashSet<String>; List<String> sameElements = new ArrayList<String>(list.size; for(String item : list){ if(set.contains{ sameElements.add; } } if(logger.isDebugEnabled{ logger.debug("getSameElements list.size={},list2.size={},use time={}ns",list.size(),list2.size(),System.nanoTime; } return sameElements;}

3、将字符串转成list

/** * 辅助方法,将字符串分割转换为list * @author yangwenkui * @time 2017年1月10日 下午4:22:20 * @param provinceIds * @return */public static List<String> stringToList(String str,String split) { if(StringUtils.isBlank{ return Lists.newArrayList(); } String[] arr = str.split; List<String> list = new ArrayList<String>(arr.length); for(String item : arr){ if(StringUtils.isNotBlank{ list.add; } } return list;}
  • 时常会有将id等用逗号连接存款和储蓄或传输,然后转成会集举办操作的景色

4、获取群集内各类实体的id

/** * 获取集合内每个实体的id */public static <T extends Serializable> List<T> getEntityIds(Collection<? extends BaseModel<T>> items) { List<T> ids = Lists.newArrayList(); if(CollectionUtils.isEmpty{ return ids; } for(BaseModel<T> entity : items){ T id = entity.getId(); if(!ids.contains{ ids.add; } } return ids;}
  • BaseModel是一个接口,定义了二个getId()方法

5、依据id列表找到集合内对应的实业

/** * 根据id列表找到集合内对应的实体 * @return */public static <T extends BaseModel<String>> List<T> select(Collection<T> list,Collection<String> selects){ if(CollectionUtils.isEmpty || CollectionUtils.isEmpty{ return Lists.newArrayList(); } List<T> selectList = Lists.newArrayList(); for (String id : selects) { for(T entity : list){ if(id.equals(entity.getId{ selectList.add; break; } } } return selectList;}

小结

  • 求集合的掺和、差集注意寻觅完成的年华复杂度,list查找时间复杂度是O,HashSet查找时间复杂度是O,提出利用HashSet。测量检验开采效用差了5倍以上(集合A、集合B;
  • 将集中转为字符串能够动用com.google.common.base.Joiner.on.join达成,将字符串转为list能够动用上文内的点子;
  • 好像于获取会集内种种成分的id(getEntityIds)、依照id列表找到集结内对应的实业那样和事情相比较紧凑的格局应该也会常常出现,大家能够依附本人项目景况,将这么些模板类的代码提收取来作为公水神具包。

完整内容请参见github内rest-base项目内代码。

本文由365bet亚洲版登录发布于计算机网络,转载请注明出处:boot项目实战之工具篇

您可能还会对下面的文章感兴趣: