字符串、数组、list集合去除重复值(留一个或一个不留)

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;
    }
}
由于是小白,曾经遇到一个这样的笔试题不会,所以就记录一下,也是第一次写博客!!!

猜你喜欢

转载自blog.csdn.net/qq694885382/article/details/80281236