Map
- 和collecton的区别
- map存储元素是成对出现的,键是唯一的,值可重复
- Collection存储元素是单独的
- map集合的数据结构只针对键有效,和值无关
- collection的数据结构针对元素有效
功能
Map集合的功能概述:
1:添加功能
V put(K key,V value):添加元素。这个其实还有另一个功能
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
Map<Integer,String> map=new HashMap<Integer, String>();
System.out.println(map.put(1, "en")); // null
System.out.println(map.put(1, "ya")); // en
System.out.println(map.get(1)); // ya
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1, "啵啵虎");
map.put(2, "bian");
map.put(3, "ba");
map.put(1, "梦龙");
System.out.println(map);
// 输出结果 {1=梦龙, 2=bian, 3=ba}
2:删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
3:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
System.out.println(map.containsKey(2)); //true
System.out.println(map.containsKey(4)); //false
boolean containsValue(Object value):判断集合是否包含指定的值
System.out.println(map.containsValue("啵啵虎")); //false
System.out.println(map.containsValue("bian")); //true
System.out.println(map.containsValue("Mark")); //false
boolean isEmpty():判断集合是否为空
System.out.println(map.isEmpty()); //false
4:获取功能
Set<Map.Entry<K,V>> entrySet():???
Set<Entry<Integer,String>> set=map.entrySet();
① System.out.println(set);
//[1=梦龙, 2=bian, 3=ba]
② Iterator<Entry<Integer, String>> iterator=set.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
//1=梦龙
2=bian
3=ba
V get(Object key):根据键获取值
System.out.println(map.get(1)); //梦龙
Set keySet():获取集合中所有键的集合
Set<Integer> s=map.keySet();
System.out.println(s); // [1, 2, 3]
Collection values():获取集合中所有值的集合
Collection<String> a= map.values();
System.out.println(a); //[梦龙, bian, ba]
5:长度功能
int size():返回集合中的键值对的对数
System.out.println(map.size()); //3
hashmap
键是哈希表结构,可以保证键的唯一性
LinekedHashMap
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
TreeMap
键是红黑树结构,可以保证键的排序和唯一性
6.遍历map集合
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1, "啵啵虎");
map.put(2, "bian");
map.put(3, "ba");
map.put(1, "梦龙");
//得到键
Set<Integer> set =map.keySet();
//遍历键
for(Integer key:set) {
//根据键得到值
String values = map.get(key);
System.out.println(key+values); //1梦龙
//2bian
//3ba
}
Collections
Collections:是针对集合进行操作的工具类,都是静态方法。
面试题:
Collection和Collections的区别?
Collection:是单列集合的顶层接口,有子接口List和Set。
Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
要知道的方法
public static void sort(List list):排序 默认情况下是自然顺序。
List<String> list=new ArrayList<>();
list.add("b");
list.add("3");
list.add("6");
list.add("1");
list.add("a");
System.out.println(list); //[b, 3, 6, 1, a]
Collections.sort(list);
System.out.println(list); //[1, 3, 6, a, b]
public static int binarySearch(List<?> list,T key):二分查找
public static T max(Collection<?> coll):最大值
public static void reverse(List<?> list):反转
Collections.reverse(list);
System.out.println(list); //[b, a, 6, 3, 1]
public static void shuffle(List<?> list):随机置换
HashMap和Hashtable的区别
map线程不安全的,效率高
table安全,低
List,Set,Map等接口是否都继承子Map接口