文章詳情頁
操縱java數(shù)組
瀏覽:79日期:2024-06-19 10:37:18
內(nèi)容: 如果你做過很多java程序,你可能對(duì)java集合類很熟悉,例如Vector和ArrayList。你可以創(chuàng)建一個(gè)集合并向其中增加元素: List lst = new ArrayList(); lst.add(new Integer(37));在這個(gè)特殊的范例中,一個(gè)整型值37用于構(gòu)造一個(gè)Integer封裝類對(duì)象,然后那個(gè)對(duì)象被加入到列表。這個(gè)簡單的范例展示集合的一個(gè)基礎(chǔ)-他們用于操縱一列對(duì)象,其中的每個(gè)對(duì)象是一個(gè)類或者接口類型。因此,一個(gè)ArrayList可以包含Object,String,Float以及Runnable類型的對(duì)象。集合類不能用于原始數(shù)據(jù)類型的列表,例如整型數(shù)組。如果你在你的程序中使用原始類型的數(shù)組,你如何操縱它們呢?這個(gè)技巧就給你展示幾個(gè)你可以使用的技術(shù)。第一個(gè)技術(shù)是排序。java.util.Arrays類包含一套排序和查找數(shù)組的類方法,例如: import java.util.Arrays; public class ArrayDemo1 { public static void main(String args[]) { int vec[] = {37, 47, 23, -5, 19, 56}; Arrays.sort(vec); for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } } }這個(gè)演示程序初始化一個(gè)整數(shù)數(shù)組然后調(diào)用Arrays.sort升序排序那個(gè)數(shù)組。類似的,你可以在排完序的數(shù)組上進(jìn)行二分法查找: import java.util.Arrays; public class ArrayDemo2 { public static void main(String args[]) { int vec[] = {-5, 19, 23, 37, 47, 56}; int slot = Arrays.binarySearch(vec, 35); slot = -(slot + 1); System.out.println('insertion point = ' + slot); } }這個(gè)程序有個(gè)微妙的概念,如果二分法查找失敗它將返回:-(insertion point) - 1這個(gè)演示程序以參數(shù)35調(diào)用查找方法,而那個(gè)參數(shù)在數(shù)組中不存在,方法返回值-4,如果這個(gè)值加一再取其負(fù)數(shù)就得到3,這就是35應(yīng)該被插入到數(shù)組中的位置,換言之,值-5, 19和23在數(shù)組中占據(jù)的位置是0,1和2。因此值35應(yīng)該在索引3的位置,而37, 47以及56順延。搜索方法并不進(jìn)行實(shí)際的插入操作而只是指出應(yīng)該在何處插入。除了排序和查找,我們還可以對(duì)原始類型數(shù)組做什么?另一個(gè)有用的技術(shù)是將一個(gè)原始數(shù)組轉(zhuǎn)換為等價(jià)的對(duì)象類型數(shù)組。每個(gè)對(duì)應(yīng)元素使用它們的封裝器類,例如在封裝數(shù)組中,37成為Integer(37)。 import java.util.Arrays; import java.lang.reflect.Array; public class ArrayDemo3 { // if input is a single-dimension primitive array, // return a new array consisting of wrapped elements, // else just return input argument public static Object toArray(Object vec) { // if null, return if (vec == null) { return vec; } // if not an array or elements not primitive, return Class cls = vec.getClass(); if (!cls.isArray()) { return vec; } if (!cls.getComponentType().isPrimitive()) { return vec; } // get array length and create Object output array int length = Array.getLength(vec); Object newvec[] = new Object[length]; // wrap and copy elements for (int i = 0; i < length; i++) { newvec[i] = Array.get(vec, i); } return newvec; } public static void main(String args[]) { // create a primitive array int vec[] = new int[]{1, 2, 3}; // wrap it Object wrappedvec[] = (Object[])toArray(vec); // display result for (int i = 0; i < wrappedvec.length; i++) { System.out.println(wrappedvec[i]); } } }方法'toArray'的參數(shù)是一個(gè)Object對(duì)象(數(shù)組可以被賦值給一個(gè)Object引用)。如果參數(shù)是null或者代表的不是原始類型數(shù)組那么這個(gè)方法簡單的返回參數(shù)值。java.lang.Class工具類用于判斷參數(shù)是否是一個(gè)數(shù)組并獲取數(shù)組的底層元素的類型。一旦做完這些檢查,使用java.lang.reflect.Array工具類的反射工具方法就可以獲取原始數(shù)組的長度并獲得數(shù)組的單個(gè)元素。Array.get獲得的每個(gè)元素被返回到封裝器類中,例如Integer或者Double。最終的范例基于前面的那個(gè)并向你展示如何在數(shù)組上使用集合特性。這假設(shè)你已經(jīng)有一個(gè)對(duì)象數(shù)組。 import java.util.Arrays; import java.util.List; public class ArrayDemo4 { public static void main(String args[]) { Object vec[] = {new Integer(37), new Integer(47)}; List lst = Arrays.asList(vec); lst.set(1, new Integer(57)); for (int i = 0; i < vec.length; i++) { System.out.println(vec[i]); } } }在這個(gè)程序中,vec是一個(gè)對(duì)象數(shù)組,包含Integer(37)和Integer(47),然后Arrays.asList被調(diào)用。它返回一個(gè)集合(List接口類型),使用數(shù)組作為集合的后臺(tái)存儲(chǔ)。換言之,ArrayList這樣的集合類型在它內(nèi)部有某種存儲(chǔ)類型去存儲(chǔ)集合元素。在這個(gè)例子中,使用的存儲(chǔ)類型是作為參數(shù)傳 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽:
Java
相關(guān)文章:
1. python使用Word2Vec進(jìn)行情感分析解析2. python初步實(shí)現(xiàn)word2vec操作3. 輕松掌握jdbc操縱Oracle數(shù)據(jù)庫lob字段4. 在python下實(shí)現(xiàn)word2vec詞向量訓(xùn)練與加載實(shí)例5. CentOS郵件服務(wù)器搭建系列—— POP / IMAP 服務(wù)器的構(gòu)建( Dovecot )6. 用PHP操縱Oracle的LOB類型的數(shù)據(jù)7. 捕獲與解析Android NativeCrash8. Java byte數(shù)組操縱方式代碼實(shí)例解析9. Java Vector和ArrayList的異同分析及實(shí)例講解10. Java基礎(chǔ)之容器Vector詳解
排行榜
