常用集合: Set几乎成了Map的一个马甲,HashSet通过封装HashMap的成员变量实现,TreeSet和TreeMap同理 ArrayList:动态数组的数据结构,支持高效随机访问 LinkedList:双向链表的数据结构,不支持高效随机访问,插入删除时间是固定的 HashSet:由Hash表支持的一种集合,它不是线程安全的,存取的时间复杂度一般是O(1)的范围 TreeSet:支持排序的一种Set,它对元素增、删、查操作时的时间复杂度都是O(log(n)) HashMap:采取Hash表的方式进行存储,不是线程安全的,存取的时间复杂度一般是O(1)的范围(基于哈希存储的版本理论存取时间复杂度为O(1)) TreeMap:排序Map,它对元素增、删、查操作时的时间复杂度都是O(log(n)),不是线程安全的
- TreeMap的key是有序的,增删改查操作的时间复杂度为
O(log(n))
,为了保证红黑树平衡,在必要时会进行旋转 - HashMap的key是无序的,增删改查操作的时间复杂度为
O(1)
,为了做到动态扩容,在必要时会进行resize
Map遍历的四种方式: (1)for each map.entrySet() ** (2)显示调用map.entrySet()的集合迭代器 *** (3)for each map.keySet(),再调用get获取 * (4)for each map.entrySet(),用临时变量保存map.entrySet() ** List的遍历的方式: (1)for each循环 ArrayList * LinkedList *** (2)显示调用集合迭代器 ArrayList ** LinkedList *** (3)下标递增循环,终止条件为每次调用size()函数比较判断 for (int j = 0; j < list.size(); j++) ArrayList ** LinkedList * (4)下标递增循环,终止条件为和等于size()的临时变量比较判断 int = list.size(); for (int j = 0; j < size; j++) ArrayList ***(5)下标递减 ArrayList *** LinkedList *LinkedList *
List<List<String>> partitions = Lists.partition(list, int); //把list按指定大小分割
关于系统:
Runtime.getRuntime().availableProcessors(); //获取cpu支持线程数
long start = System.currentTimeMillis(); //获取当前系统时间戳
线程池
newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。例:newScheduledThreadPoolExecutorService service = Executors.newFixedThreadPool(num); //生成一个线程个数为num的长连接池service.invoke(); //执行给定的任务,当所有任务完成时,返回保持任务状态和结果的 Future 列表
创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor
创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行
Callable和Future,线程通过它们可以在任务执行完毕之后得到任务执行结果。
Callable和Runnable相似,callable需要实现call()方法,一般是和ExecutorService配合来使用的
Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。
IO流
NIOjava JVM虚拟机选项: Xms Xmx
Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的 快一点,但是也可能会导致机器暂时间变慢。
Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占 用更多的内存,超出了这个设置值,就会抛出OutOfMemory 异常。
Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。
以上三个参数的设置都是默认以Byte 为单位的,也可以在数字后面添加 [k/K]或者[m/M]、[g/G]来表示KB 或者MB、GB。
需要内存不足报java.lang.OutOfMemoryError: java heap space错误