线程的停止 :
1.停止一个线程 一般是通过一个变量来控制
2.如果需要停止一个处于一个等待状态的线程,那么需要配合interrupture方法来完成。
join方法 加入 : 可以在一个线程执行中,加入另外一个线程执行,前面的线程会等待加入的线程执行完毕后再执行。
wait() : 等待 需要等其他线程调用notify()来唤醒
线程会放到线程池中进行等待。
notify() : 唤醒 随机唤醒线程池中的一个线程
notifyAll():唤醒所有等待线程。
1. 泛型:jdk1.5新特性, 用来确定集合只能存放某一种数据类型对象
2. 好处: ①.将运行时的错误提前到编译时;
②.避免无谓的强制类型转换。
自定义方法泛型:
自定义泛型就是一个数据类型的占位或一个数据类型变量,一般是T和E来做这个占位符,占位符号是可以随意写,必须要遵守标识符的命名规范。(T和E可换成任何的,一般是一个大写的任意字母。)
方法泛型的格式: public <泛型的声明> 返回值类型 函数名( 泛型 变量名 ){ }
String s = test(“a”);
public static <T>T(这里的T是返回值) test(T s){
// 函数中运用不确定类型,那么就可以使用泛型
return s;
}
使用注意点:
- 泛型方法中自定义一个泛型数据的类型是在实际参数传递时被确定
- 泛型所用的标识符需要符合标识符的命名规范,一般习惯用大写字母表示
定义泛型类:
定义格式: class 类名<声明自定义的泛型>{ }
使用注意点:1.泛型类上定义的泛型的类型是在创建这个类对象时确定;
2.如果一个自定义泛型类,在创建对象时没有指定类型,默认是Object类型;
3.静态方法不能够使用类上自定义的泛型,必须在方法上再声明自定义。
定义泛型接口:
定义方式: interface 接口名<声明自定义的泛型>{ }
使用注意点:1.接口上自定义的泛型是在实现该接口的时候被指定的;
2.如果实现接口时没有指定类型,那么默认为Object类型
3.需要在创建接口实现类对象时指定类型,那么需要格式
--------定义------
Map 集合接口双列集合 K:V 类似OC的字典
特点:数据存储通过键值对方式,键不允许重复,值是允许重复
常用方法
添加---- > put(键, 值)
map.put(“1002”,new MyBook(“java”,100));
putAll(Map<? Extends K,? extends V> m)
Map map2 = new HashMap();
map.putAll(map2); //将map2的元素添加到map中
删除---- > clear() 清空所有元素
remove(Object o) 通过指定的键删除元素
获取---- > get(Object key) 用键取值
size() 获取元素的个数
判断---- > isEmpty() 判断map集合是否为空
containsKey() 判断是否包含此键key
containsValue(Object value) 判断集合是否包含该value值
使用注意点: 1.键可以是任意对象,值也可以是任意对象
2.Map集合中时可以嵌套list(Map)集合
Map遍历元素
方式一:keySet(); Set试图 ---> 获取所有的键用Set集合来保存 (遍历键,取值)
Set<键类型> set = map.keySet(); //map集合的key转为set集合
Iterator<> iterator = set.iterator(); // 获取set集合迭代器
while(iterator.hasNext()){ // 判断是否有元素
String key = iterator.next(); // 获取key
map.get(key); // 取value
}
方式二:values(); 获取Map集合中所有的值,用Collection集合来保存
Collection<value类型> coll = map.values(); //value转为collectin集合
Iterator<value类型> it = coll.iterator(); //创建Collection迭代器
While(it.hasNext()){ // 判断是否有元素
it.next();(返回一个value) //获取value值,并且指针指向下一个
} //结果无序,要想有序可以先把键(set取键),先排序,然后取出东西就有序
方式三:entrySet();
//通过entrySet获取类型为Map.Entry<>的泛型
Set<Map.Entry<key类型,value类型>> entry = map.entrySet();
//创建Map.Entry<>泛型迭代器
Iterator<Map.Entry<key类型,value类型>> it = entry.iterator();
While(it.hasNext()){ //判断是否有元素
// 取每个 Map.Entry<>泛型的 对象
Collections
Collection: 接口
Collections: 集合的工具类 和Arrays(数组工具类)一样
Collection和Collections 的区别?
Collection是一个单列集合的根接口,Collections是操作集合的工具类
Collections常用方法:
1.对list进行二分法查找:(前提集合必须有序)
int binarySeach(list,key); // 必须根据元素自然排序对列表进行升级排序
int binarySearch(list,key,Comparator); //要求list集合元素都是Comparable子类
2.对list集合进行排序
sort(list); //对list进行排序,使用的是list容器中对象的compareTo方法
sort(list,compartor); //按照指定比较器进行排序
3.对集合取最大值或最小值
max(Collection)
max(Collection,compartor)
min(Collection)
min(Collection,compartor)
4.对list集合进行反转
reverse(list); [1,2,3]---->[3,2,1]
5.对比较方式进行强行逆转
Comparator reverseOrder(); //把自然排序,逆变成反着排序的,(返回比较器)
Comparator reverseOrder(Comparator); (指定一个比较器)返回一个比较器
6.对list集合中的元素进行位置的替换
swap(list,x,y);
7.对list集合进行元素的替换,如果被替换的元素不存在,那么原集合不变
replaceAll(list,old,new) // 对某个list的值,换个新值
8.可以将不同步的集合变成同步的集合
Set synchronizedMap(Set<T> s)
Map synchronizedMap(Map<k,v> m)
List synchronizedList(List<T> list)
9.集合变数组
可以使用Collection 中的toArray方法。
注意:是Collection不是Collectins工具类,传入指定的类型数组,该数组的长度最好为集合的size.