饶了一大圈,最终还是实现了,哈哈~~
思路:使用hashmap记录字符出现的次数,但是hashmap存取无序,只能使用list来进行顺序存储,输出时候,先使用hashmap迭代找到出现次数最小的字符,将出现此处最小的字符都存储到另一个list2集合,使用removeall将list集合中出现次数最少的字符都移除,然后遍历输出list集合中剩余的元素即可实现。
希望大佬可以帮忙指正进行优化,非常感谢!

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] arr = new String[20];
        int i=0;
        while (sc.hasNextLine()) {
            String s= sc.nextLine();
            if (s.equals("")) {
                break;
            }
            arr[i] = s;
            i++;
        }
        int min=Integer.MAX_VALUE;
        for (int i1 = 0; (i1 < arr.length)&&(arr[i1]!=null); i1++) {
            String s=arr[i1];
            Map<Character, Integer> map = new LinkedHashMap<>();
            List<Character> list=new ArrayList<>();
            List<Character> list2=new ArrayList<>();
            for (int i2 = 0; i2 < s.length(); i2++) {
                if(map.containsKey(s.charAt(i2))){
                    map.put(s.charAt(i2),map.get(s.charAt(i2))+1);
                }else{
                    map.put(s.charAt(i2), 1);
                }
                list.add(s.charAt(i2));
            }
            for (Integer val : map.values()) {
                min=val>min?min:val;
            }
            Set<Map.Entry<Character, Integer>> set =map.entrySet();
            Iterator<Map.Entry<Character, Integer>> it = set.iterator();
            while (it.hasNext()) {
                Map.Entry<Character, Integer> entry = it.next();
                Character key = entry.getKey();
                Integer val = entry.getValue();
                if(val==min){
                    list2.add(key);
                }
            }
            list.removeAll(list2);
            for (int i2 = 0; i2 < list.size(); i2++) {
                System.out.print(list.get(i2));
            }
            map.clear();
            min=Integer.MAX_VALUE;
            list.clear();
            list2.clear();
            System.out.println();
        }
    }
}