总结:在以哈希结构为基础的由: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);
}
}