架构师训练营 - 第八周
发布于: 2020 年 11 月 15 日
package org.seal.learn.learning.search;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* SearchLinkHeader简介
*
* @author xiwang
* @date 2020-11-14 22:03
*/
public class SearchLinkHeader {
/**
* list1
*/
private static List<Integer> list1 = new ArrayList<>();
/**
* list2
*/
private static List<Integer> list2 = new ArrayList<>();
static {
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(6);
list1.add(7);
list2.add(5);
list2.add(6);
}
public static void main(String[] args) {
Integer index = findHearderIndex(list1, list2);//查找方法
if (index == null) {//查不到报错
System.out.println("can't find the index");
return;
}
System.out.println(String.format("index = %s, num = %s", index, list1.get(index)));
}
/**
*
* @param list1
* @param list2
* @return
*/
private static Integer findHearderIndex(List<Integer> list1, List<Integer> list2) {
Map<Integer, Integer> indexMap = new LinkedHashMap<>();
for (int i = 0; i < list1.size(); i++) {//先将前一个集合的数据放置到一个linked hash map中,存储下标位
indexMap.put(list1.get(i), i);
}
System.out.println(indexMap);
for (Integer header : list2) {//比对第二个集合
if (indexMap.containsKey(header)) {//匹配返回
return indexMap.get(header);
}
}
return null;
}
}
复制代码
考虑思路是使用了 linkedhashmap,将两个集合中的第一个先整个放入 map 中,key 是 header,value 是 index 下标位,然后再遍历第二个 list,判断是否在 map 中存在,若存在直接返回下标位即可,取下标位就能知道是第几个位置重叠的
划线
评论
复制
发布于: 2020 年 11 月 15 日阅读数: 28
袭望
关注
还未添加个人签名 2018.08.13 加入
还未添加个人简介
评论