现在弄性能优化,任何一个小地方都不能放过,项目里有很多地方都涉及到了两个集合查找相同元素的地方,目前做的是嵌套遍历两个集合,这样就会循环list1.size()*list2.size()次,虽然目前数据不是很多,但是也能优化,此文只是记录一种优化方式;
思想:
创建一个map集合,分别把list1以及list2的元素加进去,作为key值,value值则为他们的重复次数;当value为1就说明两个集合只有一个该元素,为2或者更多则为两个或多个相同的元素;
直接上代码
List<String> diff = new ArrayList<>();
List<String> same = new ArrayList<>();
Map<String, Integer> map = new HashMap<>(list1.size() + list2.size());
//将list1元素放入map,计数1
for (String str : list1) {
map.put(str, 1);
}
//遍历list2集合,在map中查找list2的元素,有则+1,无则计数为1
for (String str : list2) {
Integer count = map.get(str);
if (count != null) {
map.put(str, count++);
} else {