目录
一、Map集合
Map接口提供了一种映射关系,其中的内容都是以键 key 值 value 对的形式存储的
1、HashMap
1)特点
无序、以键值对的形式添加元素,键不能重复,值可以重复
//Map //特点:无序,以键值对的形式存储数据,键唯一,值不唯一 Map<String,Object> map=new Hashtable<>(); map.put("name", "糯米"); map.put("sex", "gril"); map.put("age",18); //当键相同时,值被覆盖 map.put("name", "ww"); map.put("score", 21); System.out.println(map);
结果显示:
{age=18, name=ww, sex=gril, score=21}
2)遍历方式
(1)遍历所有的键 keys
// 遍历所有的键 keys System.out.println("---------遍历所有的键 keys--------"); Set<String> keys = map.keySet(); for (String k : keys) { System.out.println(k); }
结果显示:
(2)遍历所有的值 values
// 遍历所有的值 values System.out.println("---------遍历所有的值 values--------"); Collection<Object> values = map.values(); for (Object obj : values) { System.out.println(obj); }
结果显示:
(3)遍历所有的键值对
// 遍历所有的键值对 System.out.println("---------遍历所有的键值对①--------"); Set<Entry<String,Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { System.out.println("key="+entry.getKey()+",value="+entry.getValue()); } System.out.println("---------遍历所有的键值对②--------"); entrySet.forEach(e->{ System.out.println(e.getKey()+"="+e.getValue()); });
结果显示:
3)HashMap与Hashtable之间的区别
HashMap 和 Hashtable 的关系完全类似于 ArrayList 和 Vector 的关系
HashTable是线性安全的,效率高 ,但不允许使用null作为key和value,否则会引发异常,
HashMap是线性不安全的,但允许使用null作为key和value
2、TreeMap
1)以键排序
(1)默认升序
// 默认按照键的升序进行排序操作 Map<String,Object> map=new TreeMap<>(); map.put("zs", 100); map.put("ls", 88); map.put("ww", 120); System.out.println(map);
结果显示:
{ls=88, ww=120, zs=100}
(2)降序
利用Comparator调用降序的方法
// Comparator.reverseOrder()实现降序排序 Map<String,Object> map1=new TreeMap<>(Comparator.reverseOrder()); map1.put("zs", 100); map1.put("ls", 88); map1.put("ww", 120); System.out.println(map1);
结果显示:
{zs=100, ww=120, ls=88}
2)以值排序
Collections:工具类,提供一组静态方法的集合框架帮助类
利用此类的方法实现以值排序
//以值排序 //获取键值对 Set<Entry<String,Object>> entrySet = map.entrySet(); //将键值对方式转换成List集合 List<Map.Entry<String, Object>> lst=new ArrayList<>(entrySet); //Collection:是集合框架的顶级接口 //Collections:是集合框架中的帮助类 Collections.sort(lst,new Comparator<Entry<String, Object>>() { @Override public int compare(Entry<String, Object> a, Entry<String, Object> b) { return -(a.getValue().hashCode()-b.getValue().hashCode()); } }); lst.forEach(System.out::println);
结果显示:
ww=120 zs=100 ls=88
Arrays:工具类,提供了一组静态方法操作数组
//Arrays:工具类,提供了一组静态方法操作数组 String str="1,2,3,4,5,6,7"; String[] strings = str.split(","); //将数组转换成集合 List<String> asList = Arrays.asList(str.split(",")); System.out.println(asList); //将数组通过Arrays.toString方式转换成字符串 String string = Arrays.toString(strings); System.out.println(string);
结果显示:
[1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4, 5, 6, 7]
J2EE快速入门之集合框架【03】
最新推荐文章于 2022-06-02 11:16:32 发布