Java基础知识学习5
How are you doing? 比较正式的说法!最近怎么样。
what's happening? 发生了什么事情。
1. comparable<T> :接口。implements comparable接口的话,则必须实现compareTo方法。将这个对象
this与另一个对象进行比较! java.util.Comparator<T> 接口下有一个Compara(T a, T b),将对象a和对
象b进行比较。
2. 队列与双端队列:队列可以有效的在尾部添加一个元素,在头部删除一个元素!有两个断头的队列成为
双端队列!
3.优先级队列PriorityQu<T>eue:元素可以按照任意的顺序插入,却总按照排序的顺序进行检索。优先级
使用了堆来实现该功能,堆是一个可以自我调整的二叉树。优先级队列的典型任务是任务调度。
4.映射表(map)用来存放键值对。java类库为映射为映射表提供了两个实现 HashMap 和 TreeMap.
5.HashMap:对键进行散列
6.TreeMap:用键的整体顺序对元素进行排序。并将其组织成搜索树。
7.实现了Map接口的类的方法。① Set<K> keySet() :返回一个键
② Collection<k> values :值集合
③ Set<Map Entry<k, v>> entrySet() :键值对集
8.枚举集和枚举映射表。
9.同步视图:如果多线程访问集合,就必须确保集不被意外的破坏。collections类的静态
synchronizeMap方法可以将任何一个映射表转换成具有同步访问方法的Map.
e.g. Map<String, Employee> map = Collections.synchronizeMap(new hashMap<String, Employee>
());
10.批操作:e.g.如果希望找出两个集得交
Set<String> result = new HashSet<String>(a);
result.retainAll(b);//保留既在a中也在b中的元素
11.Arrays.asList方法将数组转换成集合。
12.用toArray方法转换成数组。
13.collections中的
sort方法可以对实现了List接口的集合进行排序
binarySearch可以对排好序的集合进行二分查找
e.g.
i = Collections.binarySearch(c, element);
if( i < 0)
c.add(-i - 1, element);
如果i 小于0 表示未找到。 -i -1 表示插入时该元素的正确位置!
14.属性映射表:
① 键值都是字符串
② 表可以保存在一个文件中,也可以从一个文件中加载
③ 使用一个默认的辅助表
15.栈 Stack实现了栈的基本功能,但是也有insert 和remove 方法!
16.位集。
17.多线程2 new -----> runnable --------->terminated
runnable ------>blocked
runnable ------>waiting
runnable ------>timed waiting
一个线程只有在调用了yield方法或者被阻塞或者等待是,才失去控制权。
一个可运行线程(Runnable状态)可能正在运行,也可能不在运行。(依赖操作系统调度)
18. 对象锁。如果两个线程同时对同一个资源进行修改的话。就会产生不可预见的结果。为了防止这种情
况的发生。有了对象锁
e.g. myLock.lock();
try
{
do something
}
finally
{
myLock.unlock;
①锁用来保护代码片段,任何时刻只能有一个线程执行被保护的代码
②锁可以管理视图进入被保护代码的线程
③锁可以拥有一个或多个相关的条件对象
④每个条件对象管理那些已经进入被保护的代码段但还不能运行的线程
}
19.