1) System.out.println(list);
站在用戶的角度思考問題,與客戶深入溝通,找到青田網(wǎng)站設(shè)計與青田網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋青田地區(qū)。
2) [Hello,Java,Learn,World]
3)改第一句List list=new LinkedList();
1. ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
2. 對于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于LinkedList,因為LinkedList要移動指針。
3. 對于新增和刪除操作add和remove,LinedList比較占優(yōu)勢,因為ArrayList要移動數(shù)據(jù)。
4. ArrayList的空間浪費(fèi)主要體現(xiàn)在在list列表的結(jié)尾預(yù)留一定的容量空間,而LinkedList的空間花費(fèi)則體現(xiàn)在它的每一個元素都需要消耗相當(dāng)?shù)目臻g。
4)Vector list=new Vector();
1. Vectors是可同步化的,意思就是說,任何操作Vector的內(nèi)容的方法都是線程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是線程安全的。
2. 不管是ArrayList還是Vector,在它們內(nèi)部都是使用一個數(shù)組來保存數(shù)據(jù)的。開發(fā)過程中,在使用它們?nèi)魏我粋€的時候,你都需要記住這一點(diǎn)。你在往一個ArrayList或者Vector里插入一個元素的時候,如果內(nèi)部數(shù)組空間不夠了,ArrayList或者Vector就要擴(kuò)展它的大小。Vector在默認(rèn)情況下是增長一倍的大小,而ArrayList增加50%的大小。
//我用集合框架的老大跟子類ArrayList給你寫個例子
import?java.util.*;
public?class?CollectionDemo{
public?static?void?main(String[]?args){
Collection?c?=?new?ArrayList();
//增加
c.add("Java01");
c.add("Java02");
//刪除0角標(biāo)的值
c.remove(0);
//排序??為了方便,我把集合框架轉(zhuǎn)成了String[]數(shù)組
String[]?arr?=?new?String[c.size()];
arr?=?c.toArray();
Arrays.sort(arr);
//最大值
System.out.println(arr[arr.length-1]);
//因為我是String字符串集合值,沒辦法比較平均值,可以更改為Interger
}
}
public?static?void??main(String[]?args)?{
Integer[]?A?=?{1,2,3,4};
Integer[]?B?=?{1,3,7,9,11};
ListInteger?listA?=?Arrays.asList(A);
ListInteger?listB?=?Arrays.asList(B);
ListInteger?jiaoji?=?new?ArrayListInteger();
for(Integer?a:listA){
if(listB.contains(a)){
jiaoji.add(a);
}
}
System.out.println(jiaoji);
ListInteger?bingji?=?new?ArrayListInteger();
for(Integer?a:listA){
if(!bingji.contains(a)){
bingji.add(a);
}
}
for(Integer?b:listB){
if(!bingji.contains(b)){
bingji.add(b);
}
}
System.out.println(bingji);
ListInteger?chaji?=?new?ArrayListInteger();
for(Integer?a:listA){
if(!listB.contains(a)){
chaji.add(a);
}
}
System.out.println(chaji);
}
TreeSet應(yīng)該是用泛型編寫的,你怎么沒數(shù)據(jù)類型餓
原因很簡單,你反序的語句
Collections.reverse(new ArrayList(Arrays.asList(col.toArray())));
實際上是把一個新new的arrayList對象反序,而不是把col反序
package?com.dy.test;
import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.List;
import?java.util.Map;
import?java.util.Random;
import?java.util.Set;
import?java.util.TreeMap;
import?java.util.TreeSet;
public?class?Test?{
public?static?void?main(String[]?args)?throws?IOException?{
Student[]?stu?=?new?Student[10];
stu[0]?=?new?Student("20170101",?"小明",?new?Random().nextInt(41)?+?60);
stu[1]?=?new?Student("20170102",?"小紅",?new?Random().nextInt(41)?+?60);
stu[2]?=?new?Student("20170103",?"小華",?new?Random().nextInt(41)?+?60);
stu[3]?=?new?Student("20170104",?"小風(fēng)",?new?Random().nextInt(41)?+?60);
stu[4]?=?new?Student("20170105",?"小黃",?new?Random().nextInt(41)?+?60);
stu[5]?=?new?Student("20170106",?"小綠",?new?Random().nextInt(41)?+?60);
stu[6]?=?new?Student("20170107",?"小帥",?new?Random().nextInt(41)?+?60);
stu[7]?=?new?Student("20170108",?"小黑",?new?Random().nextInt(41)?+?60);
stu[8]?=?new?Student("20170109",?"小軍",?new?Random().nextInt(41)?+?60);
stu[9]?=?new?Student("20170110",?"小胖",?new?Random().nextInt(41)?+?60);
System.out.println("排序前:");
for?(int?i?=?0;?i??stu.length;?i++)?{
System.out.println(stu[i]);
}
//?List集合
ListStudent?stuList?=?new?ArrayListStudent();
for?(int?i?=?0;?i??stu.length;?i++)?{
stuList.add(stu[i]);
}
System.out.println("List排序:");
Collections.sort(stuList);?//?排序方法
for?(int?i?=?0;?i??stuList.size();?i++)?{
System.out.println(stuList.get(i));
}
//?Set集合
SetStudent?stuSet?=?new?TreeSetStudent();?//?TreeSet自動排序
for?(int?i?=?0;?i??stu.length;?i++)?{
stuSet.add(stu[i]);
}
System.out.println("Set排序:");
for?(int?i?=?0;?i??stuSet.size();?i++)?{
System.out.println(stuSet.toArray()[i]);
}
//?Map
MapStudent,?Object?stuMap?=?new?TreeMapStudent,?Object();?//?TreeMap自動排序
for?(int?i?=?0;?i??stu.length;?i++)?{
stuMap.put(stu[i],?i);
}
System.out.println("Map排序:");
Object[]?keys?=?stuMap.keySet().toArray();
for?(int?i?=?0;?i??keys.length;?i++)?{
System.out.println(keys[i]);
}
}
}
class?Student?implements?ComparableStudent?{
private?String?sid;
private?String?sname;
private?int?score;
public?Student(String?sid,?String?sname,?int?score)?{
super();
this.sid?=?sid;
this.sname?=?sname;
this.score?=?score;
}
public?String?getSid()?{
return?sid;
}
public?void?setSid(String?sid)?{
this.sid?=?sid;
}
public?String?getSname()?{
return?sname;
}
public?void?setSname(String?sname)?{
this.sname?=?sname;
}
public?int?getScore()?{
return?score;
}
public?void?setScore(int?score)?{
this.score?=?score;
}
@Override
public?int?compareTo(Student?o)?{
//??return?this.score?-?o.getScore();?//?從低到高
int?r?=?o.getScore()?-?this.score;?//?從高到低
return?r?==?0???o.getSid().hashCode()?-?sid.hashCode()?:?r;
}
@Override
public?String?toString()?{
return?sname?+?"("?+?sid?+?")?"?+?score?+?"分";
}
}
運(yùn)行效果:
Set中的對象不按特定方式排序,并且沒有重復(fù)對象。但它的有些實現(xiàn)類能對集合中的對象按特定方式排序,例如TreeSet類,它可以按照默認(rèn)排序,也可以通過實現(xiàn)java.util.ComparatorType接口來自定義排序方式。Set中不能有重復(fù)對象,那么它是如何判斷要加入到集合中的對象是否重復(fù)呢?當(dāng)要加入一個對象到Set集合中時,會先調(diào)用該對象的hashcode()方法,根據(jù)hashcode來確定該對象應(yīng)該放在哪個內(nèi)存地址上。如果計算出的內(nèi)存地址中已經(jīng)放入了對象,那說明這兩個對象相同,就不會將這個對象加入到集合中。如果計算出的內(nèi)存地址中沒有放入對象,則調(diào)用該對象的equals()方法,把它與集合中每一個對象進(jìn)行比較,看這兩個對象是否相同。如果相同,則不加入這個對象到Set集合中。如果不同則加入該對象。
網(wǎng)站名稱:java集合類編寫代碼 java集合類編程題
標(biāo)題路徑:http://vcdvsql.cn/article48/hiodep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站策劃、外貿(mào)網(wǎng)站建設(shè)、微信公眾號、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)