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;} |
|