import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; /** * 去掉重复值(保留一个或一个不留) * @author mask-fish * */ public class RemoveRepetition { public static void main(String[] args) { //1.去掉重复的字符串,并保留一个; String aa = "qq,ww,ee,qq,rr,tt,qq"; String[] aaArray = aa.split(",");//字符串,转化为数组; System.out.println("aaArray:" + aaArray); HashSet<String> hs = new HashSet<String>(); for (String s : aaArray) { hs.add(s); } Iterator<String> iterator = hs.iterator(); if (iterator.hasNext()) { /* 必须要加上转义符\\ public String replaceAll(String regex, String replacement);regex -- 匹配此字符串的正则表达式 成功则返回替换的字符串,失败则返回原始字符串。*/ String aa2 = hs.toString().replaceAll("\\[", "").replaceAll("\\]", "");//去除相同项的字符串; System.out.println("aa2(String):"+aa2);//ee, ww, tt, rr, qq(那么如何把重复的值完全去掉,一个qq都不留呢?) } //2.完全去除重复,一个不留 //1)第一种:把数组变成list List<String> aaList = new ArrayList<>(); for (String aa_ : aaArray) { aaList.add(aa_); } System.out.println("aaList:"+aaList); System.out.println(check(aaList)); //2)第二种:把数组变成list List<String> list = Arrays.asList(aaArray); System.out.println(check(list)); } /** * list集合去重(一个不留) * @param list * @return */ private static List<String> check(List<String> list) { Map<String, Integer> map = new HashMap<>(); for (String s : list) { if (map.get(s) == null) {//public V get(Object key):该方法调用返回指定键所映射的value值,或者null(如果此映射不包含该键)。 map.put(s, 1);//put方法插入数据; } else { map.put(s, map.get(s) + 1);//put()方法插入的key值不能重复,否则value值覆盖前面key键映射的value值; } } System.out.println("map:" + map); System.out.println("map.keySet():"+ map.keySet()); List<String> resultList = new ArrayList<>(); for (String key : map.keySet()) {//读取map;keySet():将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取key if (map.get(key) == 1) { resultList.add(key); } } return resultList; } }由于是小白,曾经遇到一个这样的笔试题不会,所以就记录一下,也是第一次写博客!!!
字符串、数组、list集合去除重复值(留一个或一个不留)
猜你喜欢
转载自blog.csdn.net/qq694885382/article/details/80281236
今日推荐
周排行