黑马程序员技术交流社区
标题: 集合进阶版set [打印本页]
作者: zjj5669436182 时间: 2017-12-15 21:44
标题: 集合进阶版set
集合进阶版set
作者:一衡
今日主要学习了set、collections工具类、Map接口几大板块知识。记忆和练习居多。
前面已经学习过了集合的框架中所,知道,集合的两大分支为List 和 Set
二、Set
Set属于Collection子接口。
特点:无序(读取有可能和存储顺序不一样),无索引,没有重复的元素。
1、HashSet
HashSet<E>();属于Set实现类,也就继承了Collection与Set的功能。其中比较哈希值(每个元素都会调用hashCode()产生一个哈希值)。这也是HashSet没有重复元素的保证。如果存入的是自定义类,需要重写HashCode()、equals()方法。
创建HashSet格式
Set<E> set = new HashSet<E>();
HashSet<E> set = new HashSet<E>();
如果想要Set保持原顺序排序可以使用LinkedHashSet<>();
2、遍历方式:转数组、迭代器、增强for
3、 HashCode()方法的优化
如果让hashCode()方法返回一个固定值,那么每个新添加的元素都要调用 equals(Object obj)方法比较,那么效率较低。只需要让不同属性的值的元素产生不同的哈 希值,那么就可以不再调用equals方法比较提高效率。
二、Collections工具类
特点是一个工具类
主要使用场景在有序的集合应用中。
1、主要功能
A、Static int binarySearch(List list,Object key);二分查找,查找制定列表的索引位置。
B、Static void copy(List dest , List src);源列表覆盖到目标列表中.
注:目标列表长度必须大于等于源列表长度。
C、Static void fill(List list,Object o);使用制定对象填充制定列表的所有元素。
D、Static void reverse(List list);反转
E、Static void shuffle(List list);随机置换
F、Static void sort(List list);按照自然顺序排序
G、Static void swap(List list, int i ,int y);将列表中的两个元素互换。
三、Map接口
Map接口,双列集合的顶层接口。
1、格式
Map<K,V> map = new HashMap<K,V>();(又称夫妻集合)
K:键,不可重复
V:具体只能有一个值.
2、应用场景
A、映射功能
V put(K key,V value);如果集合中不存在key,返回null将key添加到map集合中
如果存在key则返回原有的value,然后将value替换原先的value.
B、删除
V remove(Object key);删除,根据制定key删除关系值返回关系值。
boolean clear();清空
C、判断
boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对
boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
boolean isEmpty():判断Map集合中是否没有任何键值对
D、获取
V get(Object key):根据键获取值
int size():返回Map中键值对的个数
E、遍历
Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有 Entry的对象封装到Set集合中返回
Set<K> keySet() :将Map中所有的键装到Set集合中返回
例如:Map<String ,Sring> map = new HashMap<String String >();
Set<String> keys = map.keySet();
for(String key : keys){
String value = map.get(key);
System.out.println(key+”\t”+value);
}
Collection<V> values():返回集合中所有的value的值的集合
例如: Map<String , Sring> map = new HashMap<String , String>();
Set<Map.Entry<String ,String>> entrys = map.entrySet();
for(Entry<String ,String> entry : entrys){
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+“\t”+value);
}
作者: 1414225997 时间: 2017-12-16 09:12
666保持,继续努力哈
作者: 陈文老师 时间: 2017-12-16 09:58






作者: 渝小妹 时间: 2017-12-19 11:00
不错不错 加油 学习使你快乐
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |