------Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! -------
Arrays概述
我們都知道,數組的可用方法,比如比較大小,查找某個元素等常見方法,是以Java為我們提供了一個工具類Arrays,主要用于擴充數組的功能。
Arrays類常用的方法:
static <T> list<T> asList(T [] t)接受一個數組,傳回一個長度固定的指定類型的清單。
static int binarySearch(T [] t, T key)接受一個指定類型的數組,并檢查該數組是否包含該指定的元素。
static T[] copyof(T[],int length)複制指定的數組,使其副本具有指定的長度。
static T[] copyofRange(T[],int start,int end)将數組指定的長度複制到一個新的數組。
static T[] fill(T[],int start ,int end T t)将t複制到指定範圍的數組中去。
static T[] sort(T [])對指定的數組進行升序排序。
static T[] sort(T[] t,int start,int end)對數組的指定範圍内進行排序。
static T[] toString(T [] ),傳回指定數組的字元串表現形式。
static <T>List<T> asArray(T[] t)傳回一個固定長度
Arrays執行個體一
import java.util.*;
class JavaCollection1_41
{
public static void main(String[] args)
{
Integer[] arr={1,23,221,412,43,89,67};
/*sop(Arrays.binarySearch(arr,23));
int[] temp=Arrays.copyOf(arr,2);
for(int i=0;i<temp.length;i++)
{
sop(temp[i]);
}
int[] arrtemp=Arrays.copyOfRange(arr,2,4);//包含頭部,不包含尾部
for(int i=0;i<arrtemp.length;i++)
{
sop(arrtemp[i]);
}
/*Arrays.fill(arr,2,4,5);
for(int i=0;i<arr.length;i++)
{
sop(arr[i]);
}
for
*/
sop("**************");
/*Arrays.sort(arr);
for(int i=0;i<arr.length;i++)
{
sop(arr[i]);
}
*/
/*把數組轉換成集合有什麼好處呢??
可以按照集合的思想來操作數組。
注意事項:
因為數組的長度是一定的。是以将數組轉換成集合時,集合的大小也是固定的,不能使用add,remove方法,但是其他的方法還是可以使用。
Arrays.sort(arr,2,4);
for(int i=0;i<arr.length;i++)
{
sop(arr[i]);
}
*/
List<Integer> list=Arrays.asList(arr);
sop(list);
sop(list.contains(23));
//注意事項,如果數組中存儲的是兌現,那麼使用asList()方法轉成集合時,數組中對應的對象就會變成集合中的對象。
//如果數組中存儲的是基本資料類型,那麼在使用asList()方法轉成集合時,數組中本身将作為一個整體變成集合中的一個對象。
int[] nums={1,23,434,54,2};
List<int[]> list2=Arrays.asList(nums);
sop(list2);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
Arrays執行個體二:
/*集合變成數組
Collection接口中的toArray()方法。
*/
import java.util.*;
class JavaCollection1_42
{
public static void main(String[] args)
{
ArrayList<String> al=new ArrayList<String>();
al.add("xt");
al.add("x");
al.add("z");
al.add("aa");
al.add("zf");
//注意事項:1如果我們傳入的數組的長度小于集合的size(),那麼系統就會自動建立一個長度為size()的數組,并傳回這個數組。
//2如果傳入的數組的長度大于集合的size(),那麼系統就會使用傳入的數組,而大于集合長度的地方為null.
//是以最好的方法是我們傳入的字元串數組的長度為集合的size();
String[] arr=al.toArray(new String[1]);
System.out.println(Arrays.toString(arr));
//2為何要将集合轉換成數組?
//因為集合可以對其進行增删,還可以修改,但是數組的大小是一定,我們不能對其進行增删,是以這是為了限定對元素的操作。
}
}
注意:集合轉換陳數組是使用Collections工具類中的ToArray方法, 數組轉換成集合是使用Arrays工具類中的asList()方法。
進階for循環
凡是支援疊代的集合都可以支援進階for循環
傳統for循環和進階for循環的差別?
1進階for循環必須有被周遊的目标,建議在周遊數組的時候,使用傳統的for,因為傳統的for可以定義角标。另外進階for循環不能夠隻能夠檢視,而且不能對數組或者集合進行操作。
進階for循環的文法格式:
for(集合類型 變量名 :能夠周遊的集合和數組)
進階for循環執行個體
import java.util.*;
class JavaCollection1_43
{
public static void main(String[] args)
{
ArrayList<String> al=new ArrayList<String>();
al.add("afd");
al.add("efg");
al.add("acd");
al.add("a");
//注意這裡的s就相當于是一個指針,開始指向afd,然後每周遊一次,指針便向後移動一格,而我們在s="fff"隻是修改了s的引用,并沒有修改al中的值。是以列印數組的結果不會變。
//進階for循環周遊ArrayList集合。
for(String s: al)
{
s="fff";
//System.out.println(s);
}
System.out.println(al);
//進階for循環周遊數組
int[] arr={1,23,321,434,312};
for(int i : arr)
{
System.out.println(i);
}
System.out.println("**************");
HashMap<Integer,String> hm=new HashMap<Integer,String>();
hm.put(1,"2");
hm.put(2,"3");
hm.put(3,"4");
Set<Integer> keyset=hm.keySet();
for(Integer i :keyset)
{
System.out.println(i+"-"+hm.get(i));
}
System.out.println("**************");
for(Map.Entry<Integer,String> me :hm.entrySet())
{
System.out.println(me.getKey()+"-"+me.getValue());
}
}
}
導入靜态包
在寫代碼時,往往需要多次調用工具類中的方法,這樣就顯得很麻煩,而為了解決這種問題,我們就采用導入靜态方法包的方法來簡化代碼的書寫。
示例如下:
import static java.util.Arrays.*;
import java.util.*;
class JavaCollection1_45
{
public static void main(String[] args)
{
Integer[] arr={23,21,22,43,5};
//由于我們導入了靜态工具類,那麼我們這裡就可以直接使用Arrays的asList()方法,而不需要寫全稱。
List<Integer> al=asList(arr);
/*System.out.println(toSting(arr));注意這裡我們不能直接使用toString()方法,因為這裡jvm會預設以為是Object的方法,而不是Arrays的toString(),是以這裡我們使用方法的時候,必須帶上包名。*/
for(Integer i :al)
{
System.out.println(i);
}
}
}