数组中连续重复数据删选且记下所在索引-demo

转载自 https://www.oschina.net/question/943923_2218485 这个问题中的一个回复,感谢大哥

public static void main(String[] args) {
List<String> list = Arrays.asList("a", "b", "a", "a", "a", "d", "d", "b");
HashMap<String, Object> map = new HashMap<>(15);
Iterator<String> it = list.iterator();
if (!it.hasNext()) {
System.out.println("集合中没有元素!");
}
String s = it.next();
if (s == null) {
s = "空字符串";
}
int cont = 0;
int index = 0;
while (it.hasNext()) {
String temp = it.next();
if (temp == null) {
temp = "空字符串";
}
if (s.equals(temp)) {
cont++;
} else {
System.out.println("\"" + s + "\"出现了" + (cont + 1) + "次");
indexMapBuild(cont, index, s, map);
s = temp;
cont = 0;
}
index++;
}
System.out.println("\"" + s + "\"出现了" + (cont + 1) + "次");
indexMapBuild(cont, index, s, map);
}

private static void indexMapBuild(int cont, int index, String s, HashMap<String, Object> map) {
if (cont + 1 >= 2) {
System.out.println("所在的开始索引:" + (index - cont));
System.out.println("所在的结束索引:" + index);
ArrayList<Object> indexList = new ArrayList<>();
indexList.add(index - cont);
indexList.add(index);
map.put(s, indexList);
}
}
posted @ 2019-06-19 11:16  霖仔  阅读(139)  评论(0编辑  收藏  举报