写点什么

架构师训练营 - 第八周

用户头像
袭望
关注
发布于: 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 中存在,若存在直接返回下标位即可,取下标位就能知道是第几个位置重叠的

用户头像

袭望

关注

还未添加个人签名 2018.08.13 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 第八周