Set集合的特点:
不允许出现重复元素;
集合中的元素位置无顺序;
有且只有一个值为null的元素
Set集合分为HashSet和TreeSet。一般我们所说的Set集合指的是HashSet;
****HashSet常用方法**:**
set.add(1); 添加元素
System.out.println("set长度:"+set.size());
set.clear(); 移除所有元素
set.isEmpty() 是否为空
set.remove("1");清除某元素
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
TreeSet:
TreeSet是非线程安全的。
是一个有序的,没有重复元素”的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象 类,
TreeSet是非同步的
支持add、remove、get等方法。
和NavigableSet一样,TreeSet的导航方法大致可以区分为两类,一类时提供元素项的导航方法,返回某个元素;另一类时提供集合的导航方法,返回某个集合。
通过for-each遍历TreeSet。不推荐,
使用 迭代器循环
-
hashCode 哈希码
-
HashSet不存入重复元素的规则。使用hashcode()和equals().
-
对象加入HashSet时,HashSet会使用对象的hashCode来判断对象加入的位置。
同时也会与其他已经加入的对象的hashCode进行比较,如果没有相等的hashCode,HashSet就会假设对象没有重复出 现。 -
如果元素(对象)的hashCode值相同,是不是就无法存入HashSet中了? 当然不是,会继续使用equals 进行比较.如果
equals 为true 那么HashSet认为新加入的对象重复了,所以加入失败。
如果equals 为false那么HashSet 认为新加入的对象没有重复.新元素可以存入。 -
添加的元素要实现equals方法和hashCode方法,equals用于比较是否添加,hashCode 用于计算是hash值
1. Map提供一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value;
2 Map中键值对以Entry类型的对象实例形式存在;
3 键,即key不可重复,但是value值可以;
4 每个键最多只能映射一个值;
5 Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法;
6 Map支持泛型,形式如:Map<K,V>
7. Map集合有HashMap, HashTable, LinkedHashMap等集合。一般指的是HashMap。
HashTable:哈希表有关
LinkedHashMap:
有序的,非线程安全
链表
Key和Value都允许空,Key重复会覆盖、Value允许重复
HashMap:
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
HashMap中的Entry对象是无序排列的;
Key值和Value值都可以为null,但是HashMap中只能有一个Key值为null(key值不可重复);
Map map=new HashMap ();
map.put(1, "java");-----------------------添加map集合
map.put(2,"js");
map.put(3, "html");
Map map2=new HashMap ();
map.put(4, "java");
map.put(5,"iq");
map.put(3, "html");
map.putAll(map2); 将map2集合添加到map集合中 /*如果map2的key和map1的一样,map2就会覆盖map1的值*/
map.clear() //删除所有的元素(映射)
map.remove(key) //移除某个元素(映射)key
System.out.println(map.get(2));---------获取key为2的元素
Set set2= map.entrySet();
System.out.println(set2);----------------将map集合转换为set集合,格式k,v 1=java, 2=js, 3=html
System.out.println(map.keySet()); ---------将map集合中的key转换为set集合,
System.out.println(map.values()); --------------将map集合中的value转换为set集合,
System.out.println(map.containsKey(1)); ------------------是否含有某一个key
System.out.println(map.containsValue("java"));--------------是否含有某一个Value
System.out.println(map.isEmpty()); ---------------//是否为空
禁止抄袭,违者必究。
文章如发现错误,请指出虚心接受请教
如想使用,文章加上网址和原创作者。