1. map
- Map保存的数据是键值对,对集合中的数据操作是通过键对值进行操作键不能重复,值可以重复
- 如果键值存在,则修改对应的抽象值
- 对于数据的操作 通过键来完成的
- 增加put 修改put 删除remover 查找get(key)=>value
- 遍历:获得所有的value构成的集合valus()=>collection集合中只保存有所有的valus的值因此无法对应的值(2)获得所有的key构成的集合中保存所有的key,因此可以通过对应的key值找到对应的value值(3)获得所有的key-value值,先使用set的entryset获得,然后进行循环,并将obj转换为entry类型使用entry的getkey和getvalue的方法获得键和值。
- HashMap根据hash算法保存数据,因此存放数据无序TreeMap根据key进行自然排序,因此存放的数据根据key从小到大排序一般情况下的key的数据类型比较简单如(Integer,String)但是如何key的数据类型比较复杂的情况下(如自义定类型)则该复杂数据类型应该实现compareable接口的compareto实现方法
2.泛型集合
- 在定义集合使,规定集合保存的数据类型, 如果存放数据时不是该类型,则编译出错的,在操作的该集合数据无需类型转换
- 格式:集合类型<保存数据类型>
3.自定义泛型
1) 泛型方法:参数类型任意, 返回类型与参数类型一致
访问修饰符 <类型标示符>返回类型 方法名(类型标示符 参数名){}
何时指定具体的数据类型?
调用该方法时,根据实参的数据类型,指定类型标示符的数据类型
public T get(T obj){ return obj; } String str = t1.get(“abc”); 此时T就是String
2) 泛型类
语法: class 类名<类型标示符> {
在该类非静态方法头处可以使用类型标示符
静态方法也要使用类型标示符,只能在方法声明处自己定义类型标示符
}
class Test2 { public T set(int index, T obj){ return obj; } public static void show(T obj){ } } Test2 t2 = new Test2(); 此时T就是String
何时指定具体的数据类型?
创建该类对象时,指定数据类型
泛型类创建合法写法 Test2 t2 = new Test2(); Test2 t2 = new Test2 (); // 默认Object Test2 t2 = new Test2 (); Test2 t2 = new Test2(); Test2 t2 = new Test2();
3) 泛型接口
语法: interface 接口名<类型标示符> { }
何时指定具体的数据类型?
a) 实现类在实现泛型接口时,指定具体数据类型
如 class Test implement ITest{}
b) 实现类未执行泛型接口的具体数据类型,则该实现类为泛型类
如 class Test implements ITest{}
4.泛型的认识
- java se1.5 之前没有泛型的时候只能通过object的引用实现参数的任意化比如自己在定义一个类的时候重写compareto方法的时候要判断传过来的参数是否是该类的操作,如果是该类就将传过来的数据强制转化为该类。
- 泛型的好处是在编译的时候检查类型的安全,并且所有的强制转换都是自动和隐式的
5、Collections 对集合进行操作的类,提供了一些对集合操作的方法:
- Collections.swap(list, index1, index2)
- Collections.revers()
- Collections.sort(list [, comparator ])
- Collection. binarySearch(list, [, comparator ])
- Collection.max(list)
- Collection.min(list)
- Collection. replaceAll(list, oldObj, newObj)
- Collection. synchronizedSet(Set)
- Collection. synchronizedList(list)
- Collection. synchronizedMap(map)
List.toArray( array ) 将集合中的元素保存到指定数组中