集合下:
Set<E>:
一个不包括重复元素的Collection
HashSet<E>:
他不保证set的迭代顺序
保证元素唯一性的原理:
hashset.add(E e)
首先比较对象的哈希值,hashCode()用来计算哈希值
如果哈希值相同就继续执行equals()对比如果返回true就不添加
如果其他类中没有重写equals(),hashCode()方法就不能确保唯一性
Map<k,v>:
HashMap<k,v>:
保证k的唯一性
Map<k,v> map=new HashMap<k,v>();
map.put(k,v);
成员方法:
map.put(k,v)//添加元素返回v的值
map.remove(k)//以k删除元素返回被删除的v
map.clear()//移除所有的元素
map.containsKey(k)//用k检查元素是否包含指定的k
map.containsValue(v)/用v检查元素是否包含指定的v
map.isEmpty()//判断集合是否为空 不为空返回false
map.size()//返回集合中的键值对的对数
map.get(k)//根据k获取值
Set<K> keys= map.keySet();//获取所有k的值
Collection<v> values=map.values();//获取所有v的值
Set<Map.Entry<k,v>> entries = map.entrySet();//获取一个以map<k,v>为集合的键值对集合
Map集合的两种遍历:
例:
package com.hy_1; import java.util.HashMap; import java.util.Map; import java.util.Set; public class HashMapDemo { public static void main(String[] args) { Map<String,String> map=new HashMap<>(); map.put("123","123"); map.put("456","456"); map.put("789","789"); map.put("198723","198723"); //通过k找v Set<String> keys = map.keySet(); for (String key : keys) { System.out.println(key+"-----"+map.get(key)); } System.out.println("----------------------------"); //通过键值对对象的集合中找键和值 Set<Map.Entry<String, String>> entries = map.entrySet(); for (Map.Entry<String, String> entry : entries) { System.out.println(entry.getKey()+"------"+entry.getValue()); } } } //其中之一练习: package com.hu_3; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; public class ArrayListInHashMap { public static void main(String[] args) { ArrayList<HashMap<String, String>> arrayList = new ArrayList<>(); HashMap<String, String> map = new HashMap<>(); map.put("孙策", "大乔"); map.put("周瑜", "小乔"); arrayList.add(map); HashMap<String, String> map2 = new HashMap<>(); map2.put("郭靖", "黄蓉"); map2.put("杨过", "小龙女"); arrayList.add(map2); HashMap<String, String> map3 = new HashMap<>(); map3.put("令狐冲", "任盈盈"); map3.put("林平之", "岳林姗"); arrayList.add(map3); for (HashMap<String, String> stringStringHashMap : arrayList) { Set<Map.Entry<String, String>> keys = stringStringHashMap.entrySet(); for (Map.Entry<String, String> key : keys) { System.out.println(key.getKey() + "---" + key.getValue()); } System.out.println("---------"); } } }