亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

操縱java數組

瀏覽:42日期:2024-06-19 10:37:18
內容: 如果你做過很多java程序,你可能對java集合類很熟悉,例如Vector和ArrayList。你可以創建一個集合并向其中增加元素: List lst = new ArrayList(); lst.add(new Integer(37));在這個特殊的范例中,一個整型值37用于構造一個Integer封裝類對象,然后那個對象被加入到列表。這個簡單的范例展示集合的一個基礎-他們用于操縱一列對象,其中的每個對象是一個類或者接口類型。因此,一個ArrayList可以包含Object,String,Float以及Runnable類型的對象。集合類不能用于原始數據類型的列表,例如整型數組。如果你在你的程序中使用原始類型的數組,你如何操縱它們呢?這個技巧就給你展示幾個你可以使用的技術。第一個技術是排序。java.util.Arrays類包含一套排序和查找數組的類方法,例如: 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]); } } }這個演示程序初始化一個整數數組然后調用Arrays.sort升序排序那個數組。類似的,你可以在排完序的數組上進行二分法查找: 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); } }這個程序有個微妙的概念,如果二分法查找失敗它將返回:-(insertion point) - 1這個演示程序以參數35調用查找方法,而那個參數在數組中不存在,方法返回值-4,如果這個值加一再取其負數就得到3,這就是35應該被插入到數組中的位置,換言之,值-5, 19和23在數組中占據的位置是0,1和2。因此值35應該在索引3的位置,而37, 47以及56順延。搜索方法并不進行實際的插入操作而只是指出應該在何處插入。除了排序和查找,我們還可以對原始類型數組做什么?另一個有用的技術是將一個原始數組轉換為等價的對象類型數組。每個對應元素使用它們的封裝器類,例如在封裝數組中,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'的參數是一個Object對象(數組可以被賦值給一個Object引用)。如果參數是null或者代表的不是原始類型數組那么這個方法簡單的返回參數值。java.lang.Class工具類用于判斷參數是否是一個數組并獲取數組的底層元素的類型。一旦做完這些檢查,使用java.lang.reflect.Array工具類的反射工具方法就可以獲取原始數組的長度并獲得數組的單個元素。Array.get獲得的每個元素被返回到封裝器類中,例如Integer或者Double。最終的范例基于前面的那個并向你展示如何在數組上使用集合特性。這假設你已經有一個對象數組。 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]); } } }在這個程序中,vec是一個對象數組,包含Integer(37)和Integer(47),然后Arrays.asList被調用。它返回一個集合(List接口類型),使用數組作為集合的后臺存儲。換言之,ArrayList這樣的集合類型在它內部有某種存儲類型去存儲集合元素。在這個例子中,使用的存儲類型是作為參數傳 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
標簽: Java
相關文章:
主站蜘蛛池模板: 免费观看影院 | 免费xxxx18美国视频 | 亚洲18岁禁止 | 国产精品亚洲第五区在线 | 国产亚洲精品久久久999小说 | 日本精品高清一区二区不卡 | 国产精品欧美在线 | 国产亚洲欧洲一区二区三区 | 在线亚洲精品视频 | 风间由美中文字幕亚洲一区 | 日本在观线免费观看 | 亚洲第一看片 | 东京不太热视频高清在线 | 国产v欧美v日本v精品 | 成人午夜在线 | 国产精品区网红主播在线观看 | 亚洲欧洲一二三区机械有限公司 | 色综合久久综合 | 欧美黑人与白人做爰 | 尹人香蕉久久99天天拍欧美p7 | 国产日韩亚洲欧美 | 久久www免费人成_看 | 国产精品视频不卡 | 亚洲精品网站在线观看不卡无广告 | 国产免费高清无需播放器 | 91精品国产综合久久久久久 | 成人在线视频观看 | 视频在线观看国产 | 中国一级做a爰片久久毛片 中国一级做a爱片免费 | 97国产伦子在线观看 | 黄色录像日本 | 亚洲精品国产成人一区二区 | 成人欧美一区二区三区在线 | 成人嗯啊视频在线观看 | 亚洲精品久久片久久 | 一个色综合网 | 国产亚洲精品看片在线观看 | 亚洲欧美在线看 | 成年大片免费视频播放手机不卡 | 成人免费视频77777 | 亚洲图区综合网 |