Bootstrap

(java)Map+collections工具类

总结:在以哈希结构为基础的由:HashSet,HashList,HashMap,这些集合依赖的是哈希结构,他们比较是否重复的方法是,先hashcode是否相同,再用equals来比较

而以tree结构的如:SortedSet(TreeSet),SortedMap(TreeMap),这些比较的方法是通过comparable方法,或者comparator比较器

HashMap中的key要重写hashcode 和 equals
SortedMap和TreeMap中的Key要实现comparable接口,或者单独创建比较器comparator
以上两点都是Set集合里总结出来的

以下是Map中的一些常用方法:
void clear() 清楚map操作。
boolean containsKey(Object key) 判断map中是否包含这样的key,如果包含则返回 true 。
boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定的值,则返回 true

Object get(Object key) 通过key值来获取value

boolean isEmpty(); 判断盖集合是否为空

Set keySet(); 获取Map中所有的key
Collection values(); 获取Map集合中所有的values

Object put(Object key, Object value); 向集合中添加键值对

Object remove(Object key) ; 通过key将键值对删除

int size(); 获取map中键值对的个数

Set entrySet(); 返回此映射中包含的映射关系的Set视图

MAP方法的使用如下:
1.注意存储Map集合key部分的元素,需要同时重写hashcode和equals方法,不然底层无法去实现无序不可重复的功能

import java.util.*;

public class MapTest {

	public static void main(String[] args) {
		
		//创建Map集合
		Map persons =  new HashMap();//HashMap的默认初始化容量是16,默认加载因子是0.75
		
		//存入键值对信息,例:人的ID和人的名字
		
		persons.put("10001", "JACK");
		persons.put("10002", "JAC");
		persons.put("10003", "JA");
		persons.put("10004", "JAC");
		persons.put("10001", "LUCK");
		
		System.out.println(persons.size());
		System.out.println(persons.isEmpty());
		
		
		//当key值相同时,观察不同value是如何处理的
		System.out.println(persons.containsValue("JACK"));  //输出flase
		System.out.println(persons.containsValue("LUCK"));	//输出true
		//总结新来的value会覆盖原先的
		
		//通过key来获取value
		String k ="10004";
		Object v1 = persons.get(k);
		System.out.println(v1);//输出结果为JAC


		//获取所有的key
		//并演示如何遍历Map集合,包括key和value一起
		Set keys = persons.keySet();
		Iterator it = keys.iterator();
		while(it.hasNext()) {
			Object n1 = it.next();
			Object n2 = persons.get(n1);
			System.out.println(n1+"--->"+n2);
		}


		//10.entrySet
		Set entrySet = persons.entrySet();
		Iterator it3 = entrySet.iterator();
		while(it3.hasNext()) {
			System.out.println(it3.next());
			/*输出结果为10002=JAC
					10001=LUCK
				10004=map集合.User@52cc8049
				10003=JA*/
		}
		
	}

}

HashMap默认初始化容量是16,默认加载因子是0.75
Hashtable默认初始化容量是11,默认加载因子是0.75

java.util.Properties;是Hashtable的子类,也是由key和vaule组成,但是key和value都是字符串类型

SortedMap中的key特点:无序不可重复,但是存进去的元素可以按照大小自动排列。

如果想自动排序:key部分的元素需要,1.实现compar接口。2.单独写一个比较器,comparator

=============================================
关于集合工具类 java.util.Collecitons; 是一个类
区别于java.util.Collection 集合接口

Collections工具类是可以对List的元素排序,但是集合中的元素必须是“可比较的”,实现Comparable接口

import java.util.*;

public class CollecitonsTest {
	public static void main(String[] args) {
		//回忆创建List集合的方法,并且往里面添加元素
		List n1 = new ArrayList();
		
		n1.add(1);
		n1.add(12);
		n1.add(7);
		n1.add(10);
		n1.add(13);
		n1.add(5);
		
		//排序,调用Collections工具类
		//sort(List l)
		Collections.sort(n1);  //再遍历输出n1,将按照大小顺序输出


		//如果想让Set排序,则需要先将Set集合转换为List集合
		Set s1 = new TreeSet();
		List s2 = new ArrayList(s1);
		
		for(Iterator it=n1.iterator();it.hasNext();) {
			System.out.println(it.next());
		}
		
		//先有个印象,将ArrayList集合转换成线程安全的
		List myList = new ArrayList();
		Collections.synchronizedList(myList);
	}
}
;