目录
一,集合框架
Collection接口存储一组不唯一,无序的对象
List 接口继承Collection接口,存储一组不唯一,有序
Set 接口存储一组唯一,无序的对象
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。
LinkedList采用链表存储方式。插入、删除元素时效率比较高
二,集合框架中的方法
List接口的常用方法
LinkedList的特殊方法
ArrayList与LinkedList对比
Set接口
Map接口
Map接口存储一组键值对象,提供key到value的映射
Map接口常用的实现类HashMap
HashMap类的特点
不保证映射的顺序,特别是不保证顺序恒久不变
数据添加到HashMap集合后,所有数据的数据类型将转换为Object类型,所以从其中获取数据
需要进行强制类型转换。
Map接口的常用方法
三,集合接口中部分方法展示
public static void main(String[] args) {
/* //创建Collection接口的实现类的对象
Collection coll = new ArrayList();
// 1 ,add(Object e)方法:将元素e添加到集合coll中
coll.add("AA");
coll.add("BB");
coll.add(123);
coll.add(new Person());
// 2, size()方法:获取添加元素的个数
System.out.println(coll.size());
//在创建一个集合coll1
Collection coll1 = new ArrayList();
coll1.add(456);
coll1.add("cc");
// 3, addAll(Collection coll1)方法:将coll1集合中的元素添加到当前集合中
coll.addAll(coll1);
System.out.println(coll.size());
//遍历一下coll集合
System.out.println(coll);
//4, clear()方法: 清空集合元素
coll.clear();
System.out.println(coll);
//5,isEmpty()方法:判断当前集合是否为空
System.out.println(coll.isEmpty());*/
System.out.println("*****************************************************************");
/* Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry",20));
coll.add(new String("Tom"));
coll.add(false);
// 6, contains(Object obj)方法:判断当前集合中是否包含obj
boolean contains = coll.contains(123);
System.out.println(contains);//ture
System.out.println(coll.contains(new String("Tom")));//ture
System.out.println(coll.contains(new Person("Jerry",20)));//false , person中必须重写equ方法才可以输出ture
//7, containsAll(Collection coll1):判断形参coll1中所有元素是否都存在于当前集合中
// collection coll1 = Arrays.asList(123,456);
System.out.println(coll.containsAll(Arrays.asList(123,4567)));
//8, remove(Object obj):从当前集合中移除obj元素
coll.remove(123);
System.out.println(coll);
//9, removeAll(collection coll1):差集:从当前集合中移除coll1中所有元素
Collection coll1 = Arrays.asList(123,456);
coll.removeAll(coll1);
System.out.println(coll);
System.out.println("**********************************************************");
//10, retainAll(Collection coll1):交集:获取当前集合和coll1集合的交集,并返回
Collection coll2 = Arrays.asList(456,false);
System.out.println(coll);*/
/* Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry",20));
coll.add(new String("Tom"));
coll.add(false);
//11, hashCode() :返回当前对象的哈希值
System.out.println(coll.hashCode());
//12, toArray() 集合转换为数组
Object[]arr = coll.toArray();
for (int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
//13, 数组转换为集合:调用Arrays类的静态方法asList()
List<String>list = Arrays.asList(new String[]{"AA","BB","CC"});
System.out.println(list);
//14, 遍历集合
//(1)普通for循环
Iterator iterator = coll.iterator();//迭代器
for (int i = 0;i < coll.size();i++){
System.out.println(iterator.next());
}
//(2)增强for循环:for(集合元素的类型 局部变量 : 集合对象)
//内部仍然用了迭代器
for (Object obj : coll){
System.out.println(obj);
}*/
//(3)迭代器遍历
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry",20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();//迭代器
while (iterator.hasNext()){
Object obj = iterator.next();
if ("Tom".equals(obj)){
iterator.remove();
}
}
//遍历删除后的集合
iterator = coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
四,遍历集合的方式
1)迭代器遍历
Iterator iterator = coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
2)增强for循环遍历
增强for循环:for(集合元素的类型 局部变量 : 集合对象)
//内部仍然用了迭代器
for (Object obj : coll){
System.out.println(obj);
3)普通for循环
普通for循环
Iterator iterator = coll.iterator();//迭代器
for (int i = 0;i < coll.size();i++){
System.out.println(iterator.next());
4)lambda表达式遍历
//遍历List
List<String> list = new ArrayList<>(Arrays.asList("aa", "bb", "cc"));
list.forEach(n -> System.out.println(n));
//遍历Map
Map<String, String> map = new HashMap<String, String>() {{
put("key1", "value1");
put("key2", "value2");
put("key3", "value3");
}};
map.forEach((k,v)->System.out.println("Key:" + k + "-----Value:" + v));
五,泛型
泛型的本质是参数化类型:将所操作的数据类型指定为一个参数,使代码可以应用于多种类型。
泛型的定义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和
定性。
泛型的优点
所有强制转换都是自动和隐式进行的,安全简单。
提高了代码的重用率
格式:
Map<String, String> stu = new HashMap<>();