java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换
為了編程人員的方便及處理數(shù)據(jù)的安全性,Java特別提供了兩個非常有用的工具類:
一、Collections
1、Collections類的特點:
集合框架的工具類。里面定義的都是靜態(tài)方法。
2、Collections和Collection有什么區(qū)別?
Collection是集合框架中的一個頂層接口,它里面定義了單列集合的共性方法。
它有兩個常用的子接口,
List:對元素都有定義索引。有序的。可以重復元素。
Set:不可以重復元素。無序。
Collections是集合框架中的一個工具類。該類中的方法都是靜態(tài)的
提供的方法中有可以對list集合進行排序,二分查找等方法。
通常常用的集合都是線程不安全的。因為要提高效率。
如果多線程操作這些集合時,可以通過該工具類中的同步方法,將線程不安全的集合,轉(zhuǎn)換成安全的。
3、Collections的常用方法
1)排序
2)取最大最小值
3)二分查找
4)替換
使用指定元素替換指定列表中的所有元素
5)反轉(zhuǎn)
6)線程同步
4、對這些方法的演示如下:
import java.util.*;
class? CollectionsDemo
{
public static void main(String[] args)
{
sortDemo();
}
public static void binarySearchDemo()
{
List list = new ArrayList();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
Collections.sort(list,new StrLenComparator());
sop(list);
int index = Collections.binarySearch(list,"aaaa");
sop("index="+index);
}
public static void maxDemo()
{
List list = new ArrayList();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
Collections.sort(list);
sop(list);
String max = Collections.max(list/*,new StrLenComparator()*/);
sop("max="+max);
}
public static void sortDemo()
{
List list = new ArrayList();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
sop(list);
Collections.sort(list);
//Collections.sort(list,new StrLenComparator());
//Collections.swap(list,1,2);
sop(list);
}
public static void replaceAllDemo()
{
List list = new ArrayList();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
sop(list);
Collections.replaceAll(list,"aaa","pp");
sop(list);
Collections.reverse(list);
sop(list);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class StrLenComparator implements Comparator
{
public int compare(String s1,String s2)
{
if(s1.length()>s2.length())
return 1;
if(s1.length()
return -1;
return s1.compareTo(s2);
}
}
二、Arrays
1、特點:
用于操作數(shù)組的工具類。里面都是靜態(tài)方法。
2、Arrays類的一個非常重要的方法
public static
ListasList(T...?a)
該方法將返回一個受指定數(shù)組支持的固定大小的列表
3、把數(shù)組變成list集合有什么好處?
可以使用集合的思想和方法來操作數(shù)組中的元素。
注意:
1)? 將數(shù)組變成集合,不可以使用集合的增刪方法。因為數(shù)組的長度是固定。如果你增刪。那么會反生UnsupportedOperationException。
2)? 如果數(shù)組中的元素都是對象。那么變成集合時,數(shù)組中的元素就直接轉(zhuǎn)成集合中的元素;如果數(shù)組中的元素都是基本數(shù)據(jù)類型,那么會將該數(shù)組作為集合中的元素存在。
4、示例代碼如下:
import java.util.*;
class? ArraysDemo
{
public static void main(String[] args)
{
int[] arr = {2,4,5};
System.out.println(Arrays.toString(arr));
String[] arr = {"abc","cc","kkkk"};
List list = Arrays.asList(arr);
//list.add("qq");//UnsupportedOperationException,
sop(list);
//int[] nums = {2,4,5};
Integer[] nums = {2,4,5};
sop(li);
}
public static boolean myContains(String[] arr,String key)
{
for(int x=0;x
{
if(arr[x].equals(key))
return true;
}
return false;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
三、集合變數(shù)組
1、實現(xiàn)的方法
使用Collection接口中的toArray()方法。
2、指定類型的數(shù)組到底要定義多長呢?
當指定類型的數(shù)組長度小于了集合的size,那么該方法內(nèi)部會創(chuàng)建一個新的數(shù)組。長度為集合的size。
當指定類型的數(shù)組長度大于了集合的size,就不會新創(chuàng)建了數(shù)組。而是使用傳遞進來的數(shù)組。
所以創(chuàng)建一個剛剛好的數(shù)組最優(yōu)。
3、為什么要將集合變數(shù)組?
為了限定對元素的操作。不需要進行增刪了。
4、示例代碼如下:
import java.util.*;
class? CollectionToArray
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("abc1");
al.add("abc2");
al.add("abc3");
String[] arr = al.toArray(new String[al.size()]);
System.out.println(Arrays.toString(arr));
}
}
總結
以上是生活随笔為你收集整理的java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逍遥安卓模拟器
- 下一篇: java表达式1 2_Aviator 2