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; } }
时间: 2024-10-06 01:34:47