package com.modle;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
/**
* 模板方法模式
* @author k560
*
*/
public abstract class AbstractMap {
/* 获取重复的数字 */
protected abstract List<Integer> getSameData(int[] data);
/*获取重复的数字并且逆序输出*/
public void showSameData(int[] data) {
List<Integer> sameData = this.getSameData(data);
this.show(sameData);
}
/*展示重复的数字*/
private void show(List<Integer> sameData) {
System.out.println("以下数字有重复");
for (int i : sameData) {
System.out.println(i);
}
}
public static void main(String[] args) {
AbstractMap map=new MyMap();
int[] data=new int[]{8,8,5,6,3,2,1,4,7,5,10,56,89,78,1};
map.showSameData(data);
}
}
class MyMap extends AbstractMap {
@Override
protected List<Integer> getSameData(int[] data) {
List<Integer> list=new ArrayList<Integer>();
BitSet bs = new BitSet();
for (int i : data) {
if (bs.get(i) == false) {
bs.set(i, true);
} else {
list.add(i);
}
}
return list;
}
}