Java學習第十五節 之容器、集合
一、常用工具方法
1、Collection接口 //優於數組的是可以自動收縮長度
2、contains() //判斷是否存在某元素,對象是元素
3、containAll() //判斷集合是否包含於另一個集合裏邊,對象是集合
4、remove() //移除某元素
5、clear() //清空對應數組
6、retainAll() //求交集
7、toArray() //把對象轉換成數組,數組類型被強制轉換成Object[]
8、求長度:
String è使用length()方法
Array è使用的是length屬性
集合 è使用的是size()方法
程序舉例:
importjava.util.ArrayList;
import java.util.Collection;
public class test {
public static void main(String[] args){
Collection<Object> c=newArrayList<Object>(); //定義數組c
System.out.println( c.isEmpty()); //判斷數組是否爲空
c.add("123"); //給數組c添加元素
c.add("456");
c.add(true);
c.add('a');
System.out.println(c.size()); //輸出數組現在的長度
System.out.println( c.isEmpty()); //判斷數組是否爲空
c.remove("123"); //移除數組中的某元素
System.out.println(c.size()); //再次打印數組當前長度
System.out.println( c.isEmpty()); //判斷數字是否爲空
c.clear(); //清空數組
System.out.println(c.size()); //打印數組長度
System.out.println( c.isEmpty()); //判斷數組是否爲空
Collection<Object>c1=new ArrayList<Object>(); //定義數組c1
c1.add("123");
c1.add("456"); //給數組c1添加元素
c1.add(true);
System.out.println(c.contains("123")); //判斷當前數組c是否含有傳進來的該元素
System.out.println(c1.contains("123")); //判斷當前數組c1是否含有傳進來的該元素
System.out.println(c.containsAll(c1)); //判斷數組c是否包含在數組c1裏邊
System.out.println(c1.containsAll(c)); //判斷數組c1是否包含在數組c裏邊
}
}
二、集合List
1、List集合分爲ArrayList和LinkedList
2、List遍歷方法
(1)普通for循環
(2)增強for循環,即for-each循環
(3)迭代器
3、代碼練習
public class ListTest2{
public void useList(List list){ //封裝使用list實現輸入法的方法
while(true){
System.out.println("請輸入拼音;");
Scanner s=new Scanner(System.in);
String pinyin=s.next();
if(pinyin.equalsIgnoreCase("quit")){
break;
}
boolean exist=true;
for(Object o:list){
Words word=(Words)o;
String py=word.getPinyin();
String ws=word.getWords();
if(py.equals(pinyin)){
String[] wo=ws.split(",");
for(inti=0;i<wo.length;i++){
System.out.print((i+1)+"、"+wo[i]+" ");
}
System.out.println();
break;
}
if(!exist){
System.out.println("您輸入的拼音不存在!!");
}
}
}
}
public staticvoid main(String[] args){ //主方法測試
Words w1=newWords("zhang","張,長,漲,章,帳"); //初始化對象
Words w2=newWords("zhao","找,照,招,着,趙");
Words w3=newWords("qian","錢,前,千,$_$,欠,倩");
Words w4=newWords("sun","孫,損,筍,隼");
Words w5=newWords("li","裏,李,理,離,力");
List list=new ArrayList(); //創建數組list
list.add(w1); //把上邊初始化的對象添加到數組裏邊
list.add(w2);
list.add(w3);
list.add(w4);
ListTest lt=new ListTest ();
t.useList(list);
4、list中類Connections的常用方法
1) Connections.sort(list) è 將list按從小到大的順序排列
2) Connections.reverse(list)è 將list反序排列
3) Connections.shuffle(list)è 將list隨機排列
4) Connections.fill(list,元素)è 將元素填充到集合list裏邊,並排序
5) Connections.copy(list1,list) è 將集合list裏邊的元素全部複製進集合list1裏邊
6) Connections.binarySeach() è 查找
注意:1、 缺點:沒有類型檢測,不安全;效率低,需要裝箱、拆箱(可使用泛型改善該情況)
三、集合Set
實現可分爲HashSet()和TreeSet()
1、HashSet(),無序的,散列表
2、TreeSet(), 有序的,樹形結構,必須實現comparable接口è實現ComparableTo()方法,返回的數字,0表示相等,負數表示小於,正數表示大於。
四、集合Map
1、分類:HashMap、HashTable、TreeMap
2、遍歷方法:keySet()è所有鍵
values()è所有的值
entrySet()è所有entry條目,包括鍵和值
五、泛型,上述集合中使用泛型可避免警告
泛型優點:1、檢測類型,避免錯誤
2、提高效率