java常用及总结

常用集合:
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 *** 
LinkedList *
(5)下标递减 ArrayList *** LinkedList *
List<List<String>> partitions = Lists.partition(list, int);  //把list按指定大小分割

关于系统:
Runtime.getRuntime().availableProcessors(); //获取cpu支持线程数
long start = System.currentTimeMillis();   //获取当前系统时间戳


线程池

newCachedThreadPool
创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。例:
ExecutorService service = Executors.newFixedThreadPool(num);   //生成一个线程个数为num的长连接池
service.invoke();   //执行给定的任务,当所有任务完成时,返回保持任务状态和结果的 Future 列表

newScheduledThreadPool
创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor
创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行


Callable和Future,线程通过它们可以在任务执行完毕之后得到任务执行结果。
Callable和Runnable相似,callable需要实现call()方法,一般是和ExecutorService配合来使用的
Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。

IO流

NIO

java JVM虚拟机选项: Xms Xmx

Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的 快一点,但是也可能会导致机器暂时间变慢。

Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占 用更多的内存,超出了这个设置值,就会抛出OutOfMemory 异常。

Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。

以上三个参数的设置都是默认以Byte 为单位的,也可以在数字后面添加 [k/K]或者[m/M]、[g/G]来表示KB 或者MB、GB。

需要内存不足报java.lang.OutOfMemoryError: java heap space错误


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值