回顾:
1.特点
无序
元素添加的顺序与输出的顺序不一致
唯一
不允许添加重复元素
不重写equals方法,默认比较的是Object类型,而Object是引用类型,比较是内存地址
重写equals+hashcode,先比较hashcode值,再比较equals
hashcode值相同,则比较equals
hashcode值不相同,则不比较equals2.遍历方式
foreach
iterator(迭代器)3.常用实现类
hashset
linkhashset
treeset
按照某种特定的规则对集合中的元素进行排序(升序和降序)
java.lang.Comparable
自然比较接口
java.util.Comparator
比较器
一.Map:
1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复
它没有继承Collection接口
1.2 遍历
1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
1.2.2 先取出保存所有Entry的Set,再遍历此Set即可
//Map
//1.特点:
//1)无序
//2)以键值对的形式存在,键唯一,值可以重复。
//3)没有继承collection接口
//问题+解答:键唯一,值被覆盖
Map<String,Object> map=new HashMap<>();
map.put("name","zs");
map.put("sex","man");
map.put("age",11);
map.put("score",110);
map.put("name",121);
System.out.println(map);
//2.遍历方式
//2.1获取所有的keys
System.out.println("++++++++");
//Set:唯一,map.keySet()
Set<String> keySet = map.keySet();
for (String string : keySet) {
System.out.println(string);
}
//2.2获取所有的values
Collection<Object> values = map.values();
for (Object object : values) {
System.out.println(object);
}
//3)获取所有的键值对 map.entrySet()
Set<Entry<String, Object>> entrySet = map.entrySet();
for (Entry<String, Object> entry : entrySet) {
System.out.println(entry);
}
//新种:与3 相似 en相当于entry 是名字,任意取
entrySet.forEach(en->{
System.out.println(en);
});
2.HashMap与Hashtable之间的区别(重点)
同步(synchronized)既排队 线程安全的 hashtable
异步 线程非安全的 hashmap
3. 其它
3.1 Collections:工具类,提供一组静态方法操作Collection集合
3.2 Arrays:工具类,提供了一组静态方法操作数组
匿名内部类
//TreeMap
//1)按照 Key排序
//通过Comparator.reverseOrder()让其 键降序排
Map<String,Object> map=new TreeMap<>(Comparator.reverseOrder());
map.put("zs", 100);
map.put("ls",123);
map.put("s", 121);
System.out.println(map);
//2)按照Value排序
//获取键值对
Set<Entry<String, Object>> entrySet = map.entrySet();
//将键值对转换成List集合
List<Entry<String,Object>> list=new ArrayList<>(entrySet);
//使用Collection帮助类进行排序
//Collection和Collectionss的区别
//Collection :集合框架的父接口
//Collections:集合框架帮助类
Collections.sort(list,new Comparator<Entry<String,Object>>(){
@Override
public int compare(Entry<String, Object> o1, Entry<String, Object> o2) {
// TODO Auto-generated method stub
return o1.getValue().hashCode()-o2.getValue().hashCode();
}
});
//将数组转换成集合
String str="1,2,3,4,5,6,7";
String[] split = str.split(",");
List<String> asList = Arrays.asList(str);
System.out.println(asList);
String s=Arrays.toString(split);
System.out.println(s);