java性能优

字符串
判断字符串开头结尾等可使用charAt(索引),该方法根据索引返回该位置的值
分割字符串 使用indexOf(字符),该方法返回第一个字符的索引值
public String inexOfTest(String str){
     while(true){
         String splitStr=null;
         int j=str.indexOf(";");
         if (j<0) break;
         splitStr=str.substring(0,j);
         str=str.substring(j+1);
     }
}




 StringBuilder线程不安全效率高,StringBuffer线程安全   如果要提高效率可以设置容量参数,初始为16字节


线程安全:
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器


增加到尾端   ArrayList
增加到任意位置  LinkedList
删除任意位置头部 LinkedList  中部ArrayList  尾部 都可以
ArrayList Vector是数组操作   LinkedList是双向链表操作
Vector和ArrayList在已知数组容量的情况下,自定义初始化容量,减少数组扩容操作,提高堆内存大小,可以有效提高性能


遍历:
ArrarList使用for循环随机访问最快    LinkedList不能使用随机访问,因为每次都要遍历列表,优先使用迭代器访问
for(Iterator <String> it=list.iterator();it.hashnext();){
     temp=it.next();
}


HashMap:
    线程不安全;
    HashMap在结局Hash冲突的时候采取的策略为:HashMap广义上为数组结构,如果一个元素包括key value hash next四个属性,当出现hash冲突的时候,首先新值替换原来的值,然后新值的next指向旧值的内存地址,冲突的元素为链表结构在遍历hash非常糟糕的HashMap的时候速度非常慢,因为数据在遍历链表性能较弱。
    HashMap可以通过设置HashMap的容量参数来提高性能HashMap(int initialCapacity,float loadFactor);
    initialCapactiy设置HashMap的初始容量,当知道HashMap大小的时候设置恰当的容量大小能提高性能;
    loadFactor为负载银子,HashMap存入的数据所占总容量的比例超过此值的时候,HashMap会自动扩容,扩容操作会消耗时间,默认为0.75,负载因子越接近1使用的内存越小


LinkedHashMap
    保持列表按照输入次序排列,在HashMap的基础上单个元素的属性增加了before和after,通过一种链表结构再来维护有序性,before指向前一个元素内存地址,after指向下一个元素内存地址
TreeMap
    性能优秀的根据Key排序列表,实现为红黑树,最坏O(log O)


Set
    实际为对Map的封装key不能重复,LinkedSet->LinkedMap基于hash快速插入先进先出的顺序,TreeSet->TreeMap排序好的顺序,HashSet->HashMap基于hash快速插入无顺序;


集合访问的优化:
1 分离循环重复调用代码
    List list=new List();
    list.add("");
    .
    .
    .
    .
    list.add("");
    int lSize=list.size(); //将size放到外面,这样就只需要访问一次
    for(int i=0;i<lSize;i++){......}


2 减少方法的使用
    采用int lSize=this.elementCount;  获取元素采用  s=(String) list.elementData[i]代替s=list.get(i);


3 使用if(list instanceof RandomAccess)  判断是否为基于数组的结构,当为输入结构返回True采用随机访问,因为只有数组结构才可以快速随机访问



































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值