A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘闯2 中级黑马   /  2017-12-15 21:41  /  1140 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

6.HashSet:创建集合对象:Set<String> set=new HashSet<String>();
添加元素对象:set.add(“hello”);
三种遍历方式:a.转数组        b.迭代器                c.增强for循环
7.set接口的特点:
无序:存储和读取的顺序有可能不一样
不允许重复:要求元素唯一
没有索引
8.HashSet存储自定义对象并且遍历
a.创建集合对象                b.创建元素                c.向集合中添加元素                d.遍历集合
        通过查看源码发现:
HashSet的add()方法首先会使用当前集合中的每一个元素和新添加的元素进行hash值比较,
如果hash值不一样,则直接添加新的元素
如果hash值一样,比较地址值或者使用equals方法进行比较
比较结果一样,则认为是重复不添加
所有的比较结果都不一样则添加
9.hashcode方法和equals方法的优化,就是重写这个方法,让系统先判断哈希值是不是一样,不一样之后再用equals()方法,可以提高系统的效率。
快捷键shift+alt+s:generate hashcode() and equals()..
10.Collection和Collections有什么区别?
Collection是集合体系的最顶层,包含了集合体系的共性
Collections是一个工具类,方法都是用于操作Collection
11.二分查找法查找指定元素在指定列表的索引位置,只能是list(因为set没有索引)
而且查找之前还要先排序。(字符串,数字什么的会按照规则...)
int  index = Collections.binarySearch(list, key);                key代表要查找的元素
12.Collections对collection的几种操作:
static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
Collections.fill(list, "android");
static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列表
Collections.copy(dest, src);                        //注意:目标列表的长度至少等于源列表的长度
static void reverse(List list)  :反转                                        Collections.reverse(list);
static void shuffle(List list):傻否,随机置换                  Collections.shuffle(list);
static void  sort(List<T> list) :按照列表中元素的自然顺序进行排序
static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换
共性:都是没有返回值的,对象本身发生了变化;
13.Map接口的概述:(将键映射到值的对象,一个映射不能包含重复的键,一个键最多只能映射到一个值)
发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同
A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储
B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
C:Collection中的集合称为单列集合,Map中的集合称为双列集合。
注意:Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
14.;map的常用功能:
A:映射功能(跟添加相似):
                        V put(K key, V value) :以键=值的方式存入Map集合(就是将key映射到value返回null ,如果key存在,则覆盖value,并将原来的value返回)
B:获取功能:
                        V get(Object key):根据键获取值
                        int size():返回Map中键值对的个数
C:判断功能:
                        boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对
                        boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
                        boolean isEmpty():判断Map集合中是否没有任何键值对
D:删除功能:
                        void clear():清空Map集合中所有的键值对
                        V remove(Object key):根据键值删除Map中键值对
E:遍历功能:
                        Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回
                          Set<K> keySet() :将Map中所有的键装到Set集合中返回
                          Collection<V> values():返回集合中所有的value的值的集合
15.分别获取Map中所有的key和value;(keySet和values)
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//添加映射关系
map.put("ITCAST001", "张三");
                map.put("ITCAST002", "李四");
                map.put("ITCAST005", "李四");
                //Set<K> keySet() : 以Set的形式获返回所有的key
                Set<String> keys = map.keySet();
//for循环输出key
for (String key : keys) {
                        System.out.println(key);}
//得到value
//Collection<V> values() :
                Collection<String> values = map.values();//返回一个允许重复的集合,而且并不是List
                for (String value : values) {
                        System.out.println(value);}
16.Map的第一种遍历:
//创建Map对象
//添加映射关系
//首先召集所有的丈夫                Set<String> keys = map.keySet();
                //遍历所有的丈夫
                for (String key : keys) {
                        //让每个丈夫去找他自己的媳妇就可以了
                        String value = map.get(key);
                        System.out.println("丈夫:" + key + "---" + "媳妇:" + value);
                }
Map的第二种遍历:
                //创建Map对象
                Map<String,String> map = new HashMap<String,String>();
                //添加映射关系
                map.put("尹志平", "小龙女");
                map.put("令狐冲", "东方菇凉");
                map.put("玄慈", "叶二娘");
                //获取所有的结婚证对象
                Set<Map.Entry<String,String>> entrys = map.entrySet();
                //遍历包含了结婚证对象的集合
                for (Map.Entry<String, String> entry : entrys) {
                        //获取每个单独的结婚证对象
                        //通过结婚证对象获取丈夫和媳妇
                        String key = entry.getKey();
                        String value = entry.getValue();
                        System.out.println("丈夫:" + key + "---" + "媳妇:" + value);
                }
17.HashMap存储数据并遍历存储(字符串作为key)
关键是hm.KeySet();和hm.entrySet()方法,注意返回值
18.可变参数:本质就是一个长度可变的数组.(用于当参数个数不确定,明确类型的时候)
格式:
        实参: 一个参数一个参数的传递
        形参: 类型…变量名
注意:
        在可变参数之后不可以再追加参数(可以在前面)
        参数的数量定义, 可以给多个甚至也可以一个都不不给
实参:一个参数一个参数的传递
形参:类型...变量名
Public static int getSum(int…num){
        int sum = 0;
        for(int i = 0; i < num.length; i++){
                        sum+=num[i];
}
return sum;}

3 个回复

倒序浏览
哇,厉害了
回复 使用道具 举报


回复 使用道具 举报
不错不错   加油   学习使你快乐
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马