精华内容
下载资源
问答
  • 请写一个方法实现对HashMap排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求 HashMap 中的 User 的 age 倒序进行排序。排...

    题目描述

    已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对

    HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,

    要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散

    class User{
    	private String name;
    	private int age;
    	
    	public User(){}
    	public User(String name,int age){
    		this.name=name;
    		this.age=age;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	@Override
    	public String toString() {
    		return "User [name=" + name + ", age=" + age + "]";
    	}
    	
    	
    }
    
    public class HashMapTest {
    	//
    	public static void main(String[] args) {
    		HashMap<Integer,User> users=new HashMap<>();
    		
    		users.put(1, new User("张三",25));
    		users.put(3, new User("李四",22));
    		users.put(2, new User("王五",28));
    		
    		System.out.println(users);
    		
    		HashMap<Integer,User> sortHashMap=sortHashMap(users);
    		System.err.println(sortHashMap);
    		
    	}
    	// 定义一个进行排序的方法
    	// 要求实现 对 HashMap 集合中 value值 即User 对象的 age 属性,进行 排序
    	
    	public static HashMap<Integer,User> sortHashMap(HashMap<Integer,User> map){
    		// 拿到 map集合键值对
    		Set<Entry<Integer,User>> entrySet=map.entrySet();
    	    // 将 set 集合 转化为 List 集合
    		List<Entry<Integer,User>> list= new ArrayList<Entry<Integer,User>> (entrySet);
    		// 使用 Collections 集合 工具类 对List 进行 排序,排序规则使用 匿名内部类来实现
    		Collections.sort(list,new Comparator<Entry<Integer,User>>(){
    			
    			// 安照要求 根据 User 的age 的倒序进行排序
    			
    			public int compare(Entry<Integer,User> o1,Entry<Integer,User> o2){
    				return o2.getValue().getAge()-o1.getValue().getAge();
    			}
    			
    		});
    		
    		// 创建 新的 有序的 hahMap 子类的集合
    		LinkedHashMap<Integer,User> linkedHashMap=new LinkedHashMap<Integer,User>();
    		
    		// 将 List 中的数据 存储 在 LinkedHashMap中
    		for(Entry<Integer,User> entry:list){
    			linkedHashMap.put(entry.getKey(),entry.getValue());
    		}
    		
    		return linkedHashMap;
    		
    	}
    	
    
    }
    

    展开全文
  • HashMap集合排序

    2018-11-11 15:04:11
    练习TreeMap,创建一个小车类 ,有型号、速度属性,汽车类作为Key,速度作为vauel,先按速度排序,速度一样按型号排:
  • hashMap是无法排序的,那怎么排序? 1、思路 只有转化为list 集合list进行排序 排完序的list 集合遍历装进有序的LinkedMap 中,完成排序hashMap排序、依据年龄倒序 package com.baidu; import ...


    hashMap是无法排序的,那怎么对其排序?

    1、思路
    • 只有转化为list 集合,对list进行排序
    • 对排完序的list 集合遍历装进有序的LinkedMap 中,完成排序;
    • hashMap的排序、依据年龄倒序
    package com.baidu;
    import com.baidu.pojo.User;
    import java.util.*;
    /**
     * @auther SyntacticSugar
     * @data 2018/12/7 0007上午 10:04
     */
    public class HashMapTest {
    
        public static void main(String[] args) {
    
            HashMap<Integer, User> hashMap = new HashMap<Integer, User>();
            hashMap.put(1,new User("张三1",25));
            hashMap.put(2,new User("张三2",26));
            hashMap.put(3,new User("张三3",16));
            hashMap.put(4,new User("张三4",20));
            //获取entries、将其转化为list
            Set<Map.Entry<Integer, User>> entries = hashMap.entrySet();
            ArrayList<Map.Entry<Integer, User>> list = new ArrayList<Map.Entry<Integer, User>>(entries);
            // 使用工具类Collections   对list 遍历排序
            Collections.sort(list, new Comparator<Map.Entry<Integer, User>>() {
                public int compare(Map.Entry<Integer, User> o1, Map.Entry<Integer, User> o2) {
                    int i = o2.getValue().getAge() - o1.getValue().getAge();
                    return i;
                }
            });
            //创建linkedHashMap填充元素、 遍历查看效果
            LinkedHashMap<Integer, User> map = new LinkedHashMap<Integer, User>();
            for (Map.Entry<Integer, User> userEntry : list) {
                map.put(userEntry.getKey(), userEntry.getValue());
            }
            //
            System.out.println(map);
        }
    }
    

    3

    19.01.08更新
    

    hashmap 对空值null的处理
    putForNullKey 的方法、

    if (key == null)  
        return putForNullKey(value);  
    //那就看看这个putForNullKey是怎么处理的吧。  
    private V putForNullKey(V value) {  
        for (Entry<K,V> e = table[0]; e != null; e = e.next) {  
            if (e.key == null) {  
                V oldValue = e.value;  
                e.value = value;  
                e.recordAccess(this);  
                return oldValue;  
            }  
        }  
        modCount++;  
        addEntry(0, null, value, 0);  
        return null;  
    }  
    
    展开全文
  • 请写一个方法实现对HashMap排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求 HashMap 中的 User 的age 倒序进行排序排序时...

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

    分析:首先我们知道HashMap 本身是不可排序的,但是该题让给HashMap 排序,那我们想到他的子类LinkedHashMap,他是Map 结构,也是链表结构,主要是有序的;排序我们通过Collections工具类它有个静态方法static sort(List<?> list,Comparator comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
    代码如下:

    import java.util.*;
    
    public class TestSorts {
        public static void main(String[] args) {
            HashMap<Integer,User> users = new HashMap<Integer, User>();
            users.put(1,new User("张三",18));
            users.put(2,new User("李四",23));
            users.put(3,new User("王五",17));
            users.put(4,new User("赵六",20));
            HashMap<Integer, User> map = sortHashMap(users);
            System.out.println("排序前:"+users);
            System.out.println("排序后:"+map);
        }
    
        public static HashMap<Integer,User> sortHashMap(HashMap<Integer,User> hashMap){
            // 首先拿到 map 的键值对集合
            Set<Map.Entry<Integer, User>> entrySet = hashMap.entrySet();
            //为了使用工具类将set集合转换为List
            List<Map.Entry<Integer, User>> list = new ArrayList<>(entrySet);
            //使用 Collections 集合工具类对 list 进行排序
            Collections.sort(list, new Comparator<Map.Entry<Integer, User>>() {
                @Override
                public int compare(Map.Entry<Integer, User> o1, Map.Entry<Integer, User> o2) {
                    return o2.getValue().getAge()-o1.getValue().getAge();
                }
            });
            //将排序好的list放入HashMap的有序子类LinkedHashMap集合中
            LinkedHashMap<Integer,User> returnMap = new LinkedHashMap<Integer,User>();
            for (Map.Entry<Integer, User> entry : list) {
                 returnMap.put(entry.getKey(),entry.getValue());
            }
            return returnMap;
        }
    }
    
    

    输出结果:

    排序前:{1=User{name='张三', age=18}, 2=User{name='李四', age=23}, 3=User{name='王五', age=17}, 4=User{name='赵六', age=20}}
    排序后:{2=User{name='李四', age=23}, 4=User{name='赵六', age=20}, 1=User{name='张三', age=18}, 3=User{name='王五', age=17}}
    
    展开全文
  • 请写一个方法实现对HashMap排序功能,该方法接收 HashMap&amp;amp;amp;lt;Integer, User&amp;amp;amp;gt;为形参,返回类型为 HashMap&amp;amp;amp;lt;Integer, User&amp;amp;a

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

    解析:LinkedHashMap是HashMap的子集,可以实现有序集合。将HashMap转换为Entry集合再转换为ArrayList集合,利用Collections工具将list排序,将排序后的list再转成LinkedHashMap,欧克

    package codes;
    
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map.Entry;
    import java.util.Set;
    
    public class Test {
    	public static void main(String[] args) {
    		HashMap<Integer, User> users = new HashMap<>();
    		users.put(1, new User("张三",23));
    		users.put(2, new User("李四",24));
    		users.put(3, new User("王五",25));
    		System.out.println(users);
    		HashMap<Integer, User> sortHashMap = sortHashMap(users);
    		System.out.println(sortHashMap);
    	}
    
    	private static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> users) {
    		//拿到map的键值对集合
    		Set<Entry<Integer, User>> entrySet = users.entrySet();
    		//将set集合转换为list集合,使用list工具类的排序方法
    		List<Entry<Integer, User>> list = new ArrayList<>(entrySet);
    		//使用Collection集合工具类对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是HashMap的子类
    		LinkedHashMap<Integer, User> linkedHashMap = new LinkedHashMap<>();
    		for (Entry<Integer, User> entry : list) {
    			linkedHashMap.put(entry.getKey(), entry.getValue());
    		}
    		return linkedHashMap;
    	}
    
    }
    
    class User {
    	private String name;
    	private int age;
    	public User(String name, int age) {
    		super();
    		this.name = name;
    		this.age = age;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	@Override
    	public String toString() {
    		return "User [name=" + name + ", age=" + age + "]";
    	}
    }
    
    展开全文
  • 对集合hashmap排序问题

    2020-11-19 10:26:04
    已知一个 HashMap<Integer,Emplo>集合, Emplo有 name(String)和 age(int)属性...要求 HashMap 中的 Emplo的 age 倒序进行排序排序时 key=value 键值不得拆散 实体类 public class Emplo { private S
  • 1: 集合排序需要用的 List.sort();方法,所以要把HashMap转为List map.entrySet: 就是把(key-value)作为一个整体一对一对地存放到Set集合当中; Set类型应为:Set<Map.Entry<Integer, User>> Set<...
  • 如何对HashMap进行排序

    千次阅读 2019-04-12 10:50:11
    如何对HashMap进行排序 在这篇文章中,我们将介绍如何对HashMap进行排序,我们将讨论如何通过键或者值对HashMap进行排序。 为了下面文章的演示,我们先构造一个HashMap @Data @AllArgsConstructor class Student{ ...
  • 对HashMap集合的值中对象进行排序

    千次阅读 2019-03-26 20:11:00
    问题 一个key为Integet, value为User对象 (User对象中有name和age属性) 的HashMap 通过User的age属性进行倒序排序 你怎么排?...第一步 构建User对象 以及HashMap集合 static class User { ...
  • 对HashMap进行排序操作

    万次阅读 2018-08-28 00:13:59
    HashMap本身是无序的,因此要对HashMap进行排序,就要依赖其他的类,比如LinkedHashMap,因为该类的底层是链表,是有序的,所以可以返LinkedHashMap来确保顺序,但是对于排序我们应该借助java API为我们提供的...
  • JAVA 对HashMap进行排序

    2020-06-28 15:31:31
    的值,要求写一个函数,实现传入一个HashMap,返回一个按照要求排好序的hashmap的功能。(此处要求按年龄降序) import java.util.*; import java.util.Map.Entry; public class Main{ public static void main...
  • 题目:已知一个 HashMap&...HashMap排序功能,该方法接收 HashMap&lt;Integer, User&gt;为形参,返回类型为 HashMap&lt;Integer, User&gt;, 要求 HashMap 中的 User 的 age 倒序进行排...
  • 请写一个方法实现对HashMap排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求 HashMap 中的 User 的 age 倒序进行排序排序时 k...
  • public class HashMapSort { public static void main(String[] args) { HashMap<Integer, Student> hashMap = new HashMap<Integer,Student>(); hashMap.put(100, new Student(...
  • HashMap 元素排序实现

    2018-08-29 13:55:11
    请写一个方法实现对HashMap排序功能,该方法接收HashMap&amp;lt;Integer,User&amp;gt;为形参,返回类型为 HashMap&amp;lt;Integer,User&amp;gt;,要求 HashMap 中的 User 的 ag...
  • HashMap排序

    千次阅读 2018-12-22 10:45:52
    请写一个方法实现对HashMap排序功能,该方法接受HashMap&lt;Integer,User&gt;为形参,返回类型为HashMap&lt;Integer,User&gt;,要求对HashMap中的User的age倒叙进行排序排序时key=...
  • HashMap排序问题

    2019-07-03 12:13:45
    一道考察集合了解的熟悉度,以及集合之间的转换,实现集合排序功能。
  • hashmap进行排序

    2019-04-10 15:18:36
    遇到一个题目,要求对hashmap进行排序,之前没有接触过,现在写下来当备忘录吧 因为Java实现的集合排序只有list,所以我把hashmap转化为list进行排序。 ...
  • 对HashMap排序

    2011-05-16 20:30:00
     在项目中有个业务场景,需要访问我店铺轨迹按访问次数排序,访问我店铺轨迹保存在HashMap中,key为访问次数。不知道大家会怎样实现对HashMap排序排序之后保存为一个List。HashMap是无序的,如果需要...
  • 因此对HashMap排序的掌握很重要。HashMap排序有两个步骤:一.通过map.entrySet()方法获取键值;并将键值传递给链表list;二.自定义比较器来使用Collections.sort()方法排序链表。Collection...
  • HashMap 排序

    2019-05-28 14:03:39
    请写一个方法实现对HashMap排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求 HashMap 中的 User 的 age 倒序进行排序排序时 k...
  • 集合, User有name (String) 和 age (int) 属性,请写一个方法实现对HashMap排序功能,该方法接受HashMap&lt;Integer, User&gt;为形参,返回类型为HashMap&lt;Integer, User&gt;,要求对HashMap中...
  • 实现HashMap排序

    2019-08-05 12:59:50
    集合, User有name (String) 和 age (int) 属性,请写一个方法实现对HashMap排序功能,该方法接受HashMap<Integer, User>为形参,返回类型为HashMap<Integer, User>,要求对HashMap中的User的age倒序...
  • HashMap进行排序操作

    2019-11-22 18:07:24
    HashMap本身是无序的,因此要对HashMap进行排序,就要依赖其他的类,比如LinkedHashMap,因为该类的底层是链表,是有序的,所以可以返LinkedHashMap来确保顺序,但是对于排序我们应该借助java API为我们提供的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,881
精华内容 39,152
关键字:

如何对hashmap集合排序