明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java FAQ(6)

[摘要]六、java.util篇Q6.1 java能動(dòng)態(tài)分配數(shù)組嗎?答:可以。例如int n = 3; Language[] myLanguages = new Language[n];Q6.2 我怎么知道數(shù)組的長度?答:用length屬性。如上例中的 myLanguages.length 就為 3。Q...

六、java.util篇

Q6.1 java能動(dòng)態(tài)分配數(shù)組嗎?
答:可以。例如int n = 3; Language[] myLanguages = new Language[n];

Q6.2 我怎么知道數(shù)組的長度?
答:用length屬性。如上例中的  myLanguages.length 就為 3。

Q6.3 我還想讓數(shù)組的長度能自動(dòng)改變,能夠增加/刪除元素。
答:用順序表--java.util.List接口。
你可以選擇用ArrayList或是LinkedList,前者是數(shù)組實(shí)現(xiàn),后者是鏈表實(shí)現(xiàn)。
例如:  List list = new ArrayList(); 或是 List list = new LinkedList();  。

Q6.4 什么是鏈表?為什么要有ArrayList和LinkedList兩種List?
答:請補(bǔ)習(xí)數(shù)據(jù)結(jié)構(gòu)。

Q6.5 我想用隊(duì)列/棧。
答:用java.util.LinkedList。

Q6.6 我希望不要有重復(fù)的元素。
答:用集合--java.util.Set接口。例如:Set set = new HashSet()。

Q6.7 我想遍歷集合/Map。
答:用java.util.Iterator。參見API。

Q6.8 我還要能夠排序。
答:用java.util.TreeSet。例如:Set set = new TreeSet()。放進(jìn)去的元素會(huì)自動(dòng)排序
。
你需要為元素實(shí)現(xiàn)Comparable接口,還可能需要提供equals()方法,compareTo()方法,hashCode()方法。

Q6.9 但是我想給數(shù)組排序。
答:java.util.Arrays類包含了sort等實(shí)用方法。

Q6.10 我想按不同方式排序。
答:為每種方式定義一個(gè)實(shí)現(xiàn)了接口Comparator的排序類并和Arrays或TreeSet綜合運(yùn)用。


Q6.11 Map有什么用?
答:存儲(chǔ)key-value的關(guān)鍵字-值對(duì),你可以通過關(guān)鍵字來快速存取相應(yīng)的值。

Q6.12 set方法沒問題,但是get方法返回的是Object。
答:強(qiáng)制類型轉(zhuǎn)換成你需要的類型。參見Q5.12。

Q6.13 ArrayList和Vector有什么不同?HashMap和Hashtable有什么不同?
答:ArrayList和HashMap是多線程不安全的,在多個(gè)線程中訪問同一個(gè)ArrayList對(duì)象可能會(huì)引起沖突并導(dǎo)致錯(cuò)誤。而Vector和Hashtable是多線程安全的,即使在多個(gè)線程中同時(shí)訪問同一個(gè)Vector對(duì)象也不會(huì)引起差錯(cuò)。看起來我們更應(yīng)該使用Vector和Hashtable,但是實(shí)際上Vector和Hashtable的性能太差,所以如果你不在多線程中使用的話,還是應(yīng)該用ArrayList和HashMap。

Q6.14 我要獲得一個(gè)隨機(jī)數(shù)。
答:使用java.util.Random類。

Q6.15 我比較兩個(gè)String總是false,但是它們明明都是"abc" !
答:比較String一定要使用equals或equalsIgnoreCase方法,不要使用 == !==比較的是兩個(gè)引用(變量)是否指向了同一個(gè)對(duì)象,而不是比較其內(nèi)容。

Q6.16 我想修改一個(gè)String但是在String類中沒找到編輯方法。
答:使用StringBuffer類。
String str = "......."; //待處理的字符串StringBuffer buffer = new StringBuffer(str); //使用該字符串初始化一個(gè)StringBuffer
buffer.append("..."); //調(diào)用StringBuffer的相關(guān)API來編輯字符串
String str2 = buffer.toString(); //獲得編輯后的字符串。
另外,如果你需要將多個(gè)字符串連接起來,請盡量避免使用+號(hào)直接連接,而是使用StringBuffer.append()方法。

Q6.17 我想處理日期/時(shí)間。
答:使用java.util.Date類。你可以使用java.text.SimpleDateFormat類來在String和
Da
te間互相轉(zhuǎn)換。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //規(guī)定日期格式

Date date = formatter.parse("2003-07-26 18:30:35"); //將符合格式的String轉(zhuǎn)換為DateString s = formatter.format(date); //將Date轉(zhuǎn)換為符合格式的String





標(biāo)簽:Java FAQ(6)