package com.oracle.Test; import java.util.ArrayList; import java.util.Collection; public class Demo02 { /* * 去除重复的常见逻辑 (如果已有API可以满足你的需要.就使用已有的.) * * 1. 利用第一次出现的位置和最后一次出现的位置.比较两个位置 * 是否相同.如果位置一样代表没有重复.如果位置不相同代表有重复. * * * 2.取集合中的第一个元素.将该元素保存下来. * 从当前集合中移除第一个元素.再利用contains方法来验证 * 如果返回值为false 代表没有重复.如果返回值为true.求下标 * 移除..重复直到contains的返回值为false. * * * 关于查找: * * */ public static void main(String[] args) { //--1 提供一个集合 ArrayList<Character> list = new ArrayList<>(); //--2 循环赋值 a97 0 48 for(int i = 0 ; i < 20 ;i ++){ list.add((char)(Math.random()*15 + 97)); } System.out.println(list); //--3 遍历集合 Collection<Character> cList = new ArrayList<>(); int length = list.size(); while(length > 0){ //--取出一个元素 Character c = list.get(0); //--求第一次出现的下标和最后一次出现的下标 int index = list.indexOf(c); //indexOf( Object o)第一次出现的下标 int lastIndex = list.lastIndexOf(c); //lastIndexOf( Object o)最后一次出现的下标 //--如果下标不一致则有重复元素 if (index == lastIndex) { System.out.println(1 +""+ c); list.remove(c); length = list.size(); }else{ //-- 将该元素添加到一个新的集合中. cList.clear(); cList.add(c); //-- 获取原有长度 //-- 利用removeAll方法.一次行把和该值相同的元素移除 list.removeAll(cList); System.out.println(length - list.size() + "" + c ); length = list.size(); } } //--4 查找重复 //--5 打印元素和重复的个数 } }
时间: 2024-10-10 16:36:34