使用string.substring()方法的時候注意記憶體溢位的問題
publicstatic
void
testh()
} static
class
hugestr
} static
class
improvedhugestr
}
三種分隔字串的方法,split()簡單效能最差,stringtokenizer效能次之,自定義的方法效能最好但是可讀性太低。建議stringtokenizer
staticstring initorgstr()
return
sb.tostring();
} static
void
normalsplidtest()
} static
void
stringtokenizertest()
st = new stringtokenizer(orgstr, ":"
); }
} static
void
selfsplidtest()
splitstr = tmp.substring(0
, j);
tmp = tmp.substring(j + 1
); }
tmp =orgstr;
}}
string的charat()和jindexof()效能都特別的好,charat連用甚至比startwith()、endwith()還快。
stringbuilder和stringbuffer:string在使用 「+」的時候,如果 + 的是具體的字串,也就是編譯期可知的,那麼在編譯期就已經完成了優化,只有最後的乙個大字串。
string result = "string
" + "
and" + "
string
"// 反編譯後只有這乙個大字串
string result = "stringandstring"
stringbuilder sb =呢我stringbuilder()"string");
"and");
"string
");
如果編譯期不可知,最終也是用stringbuilder進行優化。
string str1 = "string";
string str2 = "
and"
;string str3 = "
string";
如果超大的字串,string的 + ,被反編譯stringbuilder實現,但是每次都會生成新的 stringbuilder。string的 + 最差,concat次之,stringbuilder最好。
static
void
hugestr()
string result = ""
;
for (int i = 0; i < 10000; i++)
stringbuilder sb = new
stringbuilder();
for (int i = 0; i < 10000; i++)
}
stringbuffer執行緒安全,stringbuilder執行緒不安全。如果單執行緒stringbuilder會比stringbuffer好些。
如果知道字串會有多大,在初始化的時候給定值,效能會更好。
public stringbuilder(intcapacity)
public stringbuffer(int capacity)
arraylist、vector:vector執行緒安全。其他幾乎一樣。linkedlist使用雙向連表。
如果list物件需要經常在任意位置插入元素,可以考慮使用linklist代替arraylist。但是linklist從中間刪除元素會特別耗時,它是遍歷所有,找到具體的位置,在移除。
arraylist和linklist三種遍歷方法。foreach和迭代器兩種差不多,for迴圈linkedlist不要用,慢到你無法想象。迭代器會更好些,foreach最終也會解析成迭代器還多了一步沒用的複製語句所以效能差一些。
staticvoid eachlist(listlist)
for (iteratorit =list.iterator(); it.hasnext();)
int size =list.size();
for (int i = 0; i < size; i++)
}
map
hashmap:它最重要的就是原理了。理解原理。
linkedhashmap:在hashmap的基礎上加了乙個鍊錶存放順序。accessorder為true按照元素最後訪問時間順序,為false按照存入順序,預設false。
public linkedhashmap(int initialcapacity, folat loadfactor, boolean accessorder)
可以修改accessorder看看順序
staticvoid
maptest()
}
treemap:這個就nb了,根據key排序。想使用這個或者在 new treemap(comparator<? super k> comparator)建立的時候指定comparator,或者key實現了comparable介面。
staticvoid
treemaptest()
map map2 = ((treemap) map).submap(1, 4
); system.
out.println("
get the key more than or equal 1 and less than 4");
for (iteratoriterator =map2.keyset().iterator(); iterator.hasnext();)
//小於2的
map map3 = ((treemap) map).headmap(2
);
//大於2的
map map4 = ((treemap) map).tailmap(2
); }
從網域名稱角度來架構一下360公司
周鴻禕收購了360.com,是一步極好的棋,比之開心網的ceo有魄力,如果開心網有魄力,不會淪落到這個地步,本身生活和工作是要區分開的。擁有了360.com,360公司就有了成為中國一流網際網路公司的資本,如果沒有360.com,360只是個超級二流公司而已。但是,擁有了,還要看怎麼去使用。360公...
簡單實現一下string類
自己簡單實現一下string類,如下 自己簡單實現一下string類 pragma warning disable 4996 class mystring public mystring data null len 0 default constructor mystring const char ...
換乙個角度再談一下WF
使用wf可以開發兩類流程 是傳統意義的工作流平台所提供的流程,特點是用流程進行業務的狀態處理 在這裡先對功能控制類流程做個說明 舉個例子 我們先對a表進行資料操作,再對b表進行資料操作.如果操作b表失敗,則回滾對a表的操作.當然,看到這裡你會說這不就是資料庫的事務處理嗎.是的沒錯,那我們將上面操作的...