集合
集合与数组的区别
集合框架体系(常用的一些集合类)
Collection接口
collection接口实现类的特点
collection类常用方法
-
add:添加单个元素
-
remove:删除指定元素
-
contains:查找元素是否存在
-
size:获取元素个数
-
isEmpty :判断是否为空
-
clear:清空
-
addAll:添加多个元素(一个集合)
-
containsAll:查找多个元素是否都存在
-
removeAll:删除多个元素
collection接口遍历元素的方法
一.使用迭代器(iterator)
1.基本介绍和执行原理
注意:在调用next()方法前要用hasNext()方法进行判断是否存在下一个元素,否则会抛出异常。
2.使用案例
注意:如果第一次遍历后想要再次遍历,需要重置迭代器。
二,使用增强for循环遍历
Collection接口的实现类
List接口
基本介绍
List接口的常用方法
1.add:加入一个元素或者按索引插入一个元素
2.boolean addAll(int index, Collection eles):从 index 位置开始将 eles 中的所有元素添加进来
3.Object get(int index):获取指定 index 位置的元素
4.int indexOf(Object obj):返回 obj 在集合中首次出现的位置
5.int lastIndexOf(Object obj):返回 obj 在当前集合中末次出现的位置
6.Object remove(int index):移除指定 index 位置的元素,并返回此元素
7.Object set(int index, Object ele):设置指定 index 位置的元素为 ele , 相当于是替换
8.List subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合
遍历方法
Collection中的两种以及普通for循环(通过索引)
List接口实现类
ArrayList
注意事项
底层操作机制
Vector
基本介绍
Vector和ArrayList的比较
LinkedList
全面说明
底层操作机制
ArrayList和LinkedList的比较
Set接口
Set接口基本介绍
Set接口的常用方法
和 List 接口一样, Set 接口也是 Collection 的子接口,因此,常用方法和 Collection 接口一样
Set方法的遍历方法
Set接口实现类
HashSet
全面说明
底层操作机制
LinkedHashSet
全面说明
LinkedHashSet是HashSet的子类
HashSet和TreeSet分别如何实现去重的?
注意:使用TreeSet加入对象时,如果没有使用匿名对象类传入一个Comparator,则该对象所属类必须实现了Compareable接口,否则编译器会报错。
Collection工具类
基本介绍
排序操作
查找,替换
Map接口
Map接口实现类的特点
8)的解读:将Node对象封装到Entry中(Entry指向Node对象,因为Node实现了Entry接口),再将Entry放到EntrySet中,这样便于遍历。同时还有KeySet(Set类型)存储了Key,values(collection类)存储了Value。都是指向某个对象而不是值相同。
注: 1.HashSet中的value为一个固定值。
2.Node为HashMap静态内部类。
Map接口实现类的常用方法
key就是 ’键‘
注意: 1.当key相同时,put会将Values进行替换
2.get根据key返回相应的Values
Map接口的六种遍历方式
第一组: 先取出 所有的 Key , 通过 Key 取出对应的 Value
Set keyset = map.keySet();
(1) 增强 for
System.out.println("-----第一种方式-------");
for (Object key : keyset) {
System.out.println(key + "-" + map.get(key));
}
(2) 迭代器
System.out.println("----第二种方式--------");
Iterator iterator = keyset.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key + "-" + map.get(key));
}
第二组: 把所有的 values 取出
Collection values = map.values();
//这里可以使用所有的 Collections 使用的遍历方法
(1) 增强 for
System.out.println("---取出所有的 value 增强 for----");
for (Object value : values) {
System.out.println(value);
}
//(2) 迭代器
System.out.println("---取出所有的 value 迭代器----");
Iterator iterator2 = values.iterator();
while (iterator2.hasNext()) {
Object value = iterator2.next();
System.out.println(value);
}
第三组: 通过 EntrySet 来获取 k-v
Set entrySet = map.entrySet();// EntrySet<Map.Entry<K,V>>
//(1) 增强 for
System.out.println("----使用 EntrySet 的 for 增强(第 3 种)----");
for (Object entry : entrySet) {
//将 entry 转成 Map.Entry
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey() + "-" + m.getValue());
}
//(2) 迭代器
System.out.println("----使用 EntrySet 的 迭代器(第 4 种)----");
Iterator iterator3 = entrySet.iterator();
while (iterator3.hasNext()) {
Object entry = iterator3.next();
//System.out.println(next.getClass());//HashMap$Node -实现-> Map.Entry (getKey,getValue)
//向下转型 Map.Entry
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey() + "-" + m.getValue());
}
Map接口实现类
HashMap类
基本介绍
底层操作机制
HashTable
基本介绍
底层操作机制
HashMap和HashTable比较
Properties
基本介绍
使用与HashTable基本一致
TreeSet和TreeMap
使用基本与HashSet和HashMap一致,区别在于创建对象时可以通过构造器传入一个匿名内部类Comparato实现自定义排序。