问题描述
现在有4个数或字母啊或什么你喜欢的东西,输出重复的值的编号(或其他能确定身份的东西)。比如int ddd[]={1,2,3,4};因为没有重复的值,返回null或其他你想返回的。{2,2,3,3}返回0,1,2,3(数组下标,或其他你喜欢用的东西){2,1,2,3)返回0,2{2,2,2,2}返回0,1,2,3{2,2,2,3}返回0,1,2=============================数是乱序的;可能有0,1,2,3,4个相同的数。 问题补充:虽然你的答案不满足我的要求。比如,你的test里只要是1234,就会把该索引输出。而1234我需要输出Null。5555你的代码输出Null,我却需要它输出0123,因为有4个相同的数字5。但是你的代码确实给了我思路。所以我在你的代码上该了一个地方。if( contains ) 这个数count ++;if count>1输出该数
解决方案
/** * * @param sourceList 基准数组 * @param targetList 要比较的数组 * @return 重复的index列表 */private List<Integer> getRepeat(List<String> sourceList,List<String> targetList) {List<Integer> indexList = new ArrayList<Integer>();for (int i = 0; i < targetList.size(); i++) {if (sourceList.contains(targetList.get(i))) {indexList.add(i);}}return indexList;}/** * * @param indexList 重复的index列表 */private void printIndex(List<Integer> indexList) {if (null == indexList || indexList.size() == 0) {System.out.println("null");return;}for (Integer i : indexList) {System.out.print(i + "、");}}@Testpublic void test() {List<String> sourceList = Arrays.asList("1", "2", "3", "4");List<String> targetList1 = Arrays.asList("2", "2", "3", "3");List<String> targetList2 = Arrays.asList("2", "2", "2", "2");List<String> targetList3 = Arrays.asList("5", "5", "5", "5");printIndex(getRepeat(sourceList, targetList1));printIndex(getRepeat(sourceList, targetList2));printIndex(getRepeat(sourceList, targetList3));}