• 面试小题


    1.已知一个 HashMap<Integer, User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对HashMap 的排序功能,该方法接收 HashMap<Integer, User>为形参,返回类型为 HashMap<Integer, User>,要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散。

    public class HashMapTest {
    
        public static void main(String[] args) {
            
            HashMap<Integer, User> map = new HashMap<>();
            map.put(1, new User("张三",22));
            map.put(2, new User("李四",28));
            map.put(3, new User("王五",26));
            
            System.out.println(map);
            
            Set<Entry<Integer, User>> entrySet = map.entrySet();
            System.out.println(entrySet);
            for (Entry<Integer, User> entry : entrySet) {
                System.out.println(entry.getKey()+"----"+entry.getValue());
            }
            
            List<Entry<Integer, User>> list = new ArrayList<>(entrySet);
            System.out.println(list);
            Collections.sort(list,new Comparator<Entry<Integer, User>>() {
                @Override
                public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
    
                    return o2.getValue().getAge() - o1.getValue().getAge();
                }
            });
            LinkedHashMap<Integer, User> linkedHashMap = new LinkedHashMap<>();
            for (Entry<Integer, User> entry : list) {
                linkedHashMap.put(entry.getKey(), entry.getValue());
            }
            System.out.println(linkedHashMap);
        
        }
    }

    2.用面向对象的方法求出数组中重复 value 的个数,按如下个数输出: 

    1出现:1次
    3出现:2次
    8出现:3次
    2出现:4次

    arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};

    public class Test01 {
    
        public static void main(String[] args) {
            int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5};
            System.out.println("arr.length:" + arr.length);
            test02(arr);
            
            
        }
    
        private static void test02(int[] arr) {
            Map<Integer, Integer> map = new HashMap<Integer, Integer>();
            for (int i = 0; i < arr.length; i++) {
                if (!map.containsKey(arr[i])) {
                    map.put(arr[i], arr[i]);
                }
            }
            for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                Integer key = entry.getKey();
                int num = 0;
                for (int i = 0; i < arr.length; i++) {
                    if (arr[i] == key) {
                        num++;
                    }
                }
                map.put(key, num);
            }
            for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                System.out.println(entry.getKey() + "出现:" + entry.getValue() + "次");
            }
        }
    
        private static void test01(int[] arr) {
            int[] arrNum = new int[126];    // 创建一个新数组
            
            for (int i = 0; i < arr.length; i++) {
                arrNum[arr[i]]++;    // 用来记录某元素出现的次数
            }
            
            for (int i = 0; i < arrNum.length; i++) {
                if (arrNum[i] != 0) {
                    System.out.println(i + "出现:" + arrNum[i] + "次");
                }
            }
        }
    }
  • 相关阅读:
    ES6、ES7、ES8特性
    【react】XXX项目环境搭建
    map
    vector
    list
    米勒素数模板
    POJ-2421-Constructing Roads(最小生成树 普利姆)
    HDU1301 Jungle Roads(Kruskal)
    Truck History(prime)
    phpstorm快捷键和激活
  • 原文地址:https://www.cnblogs.com/yuanziren/p/12885486.html
Copyright © 2020-2023  润新知