日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

集合转数组的toArray()和toArray(T[] a)方法

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 集合转数组的toArray()和toArray(T[] a)方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、ArrayList的toArray

  ArrayList提供了一個將List轉(zhuǎn)為數(shù)組的一個非常方便的方法toArray。toArray有兩個重載的方法:

  (1)list.toArray();

  (2)list.toArray(T[]? a);

  對于第一個重載方法,是將list直接轉(zhuǎn)為Object[] 數(shù)組;

  第二種方法是將list轉(zhuǎn)化為你所需要類型的數(shù)組,當然我們用的時候會轉(zhuǎn)化為與list內(nèi)容相同的類型。

  不明真像的同學喜歡用第一個,是這樣寫:

ArrayList<String> list=new ArrayList<String>(); for (int i = 0; i < 10; i++) {list.add(""+i); }String[] array= (String[]) list.toArray();

  結果一運行,報錯:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

  原因一看就知道了,不能將Object[] 轉(zhuǎn)化為String[],轉(zhuǎn)化的話只能是取出每一個元素再轉(zhuǎn)化。java中的強制類型轉(zhuǎn)換只是針對單個對象的,想要偷懶將整個數(shù)組轉(zhuǎn)換成另外一種類型的數(shù)組是不行的,這和數(shù)組初始化時需要一個個來也是類似的。像這樣:

Object[] arr = list.toArray(); for (int i = 0; i < arr.length; i++) {String e = (String) arr[i];System.out.println(e); }

  所以第一個重構方法就不是那么好使了。

  實際上,將list轉(zhuǎn)化為array的時候,第二種重構方法更方便,用法如下:

String[] array =new String[list.size()]; list.toArray(array); //實際項目中 List<String> sList = new ArrayList<String>(); for (MergeSoft mergeSoft : list) {if(mergeSoft.getCollectSoft() != null){sList.add(mergeSoft.getCollectSoft().getSid());} } String[] sids = sList.toArray(new String[sList.size()]); String[] devOnlyIds = collectSoftDao.queryDevOnlyIdBySid(sids);

2、采用set去重復數(shù)據(jù),和set轉(zhuǎn)array

public String[] queryDevOnlyIdBySid(String[] sid) {String paramsStr = ArrayUtils.joinStringForSql(sid, "'", ",");//數(shù)組數(shù)據(jù)轉(zhuǎn)為:'B07D26B8A919082612F9EFA55A9AACFC','3EF11C53F437A33A47C0B363B8D661BC'String sql = "SELECT di.devOnlyId FROM cems_device_installsoft di WHERE sId IN ( "+paramsStr+" )";List<Object> object = getSession().createSQLQuery(sql).list();Set<String> set = new HashSet<String>();for (int i = 0; i < object.size(); i++) {set.add(object.get(i).toString());//object里有重復的數(shù)據(jù),采用set去除重復的數(shù)據(jù) }String[] devOnlyIds = new String[set.size()]; //Set-->數(shù)組 set.toArray(devOnlyIds); return devOnlyIds; }

總結:

  1、集合轉(zhuǎn)數(shù)組用方法,比如:list.toArray(new String[list.size()])

  2、利用set去除list里面重復的數(shù)據(jù)

Set<String> set = new HashSet<String>(); for(int i=0; i < object.size(); i++){set.add(object.get(i).toString()); }

  然后set轉(zhuǎn)為數(shù)組:

set.toArray(new String[set.size()]);

?

轉(zhuǎn)載于:https://www.cnblogs.com/goloving/p/7693388.html

總結

以上是生活随笔為你收集整理的集合转数组的toArray()和toArray(T[] a)方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。