1. 程式人生 > >Collection中的接口:List、Set、SortedSet、Queue、第一篇

Collection中的接口:List、Set、SortedSet、Queue、第一篇

tps get 兩個 lec indexof 接口 static border 追加

Collection中的子接口:

LIst接口:可以存放重復的內容

Set接口:不能存放重復的內容,所有重復的內容是靠hashCode()和equals()兩個方法區分的

SortedSet接口:可以對集合中的數據進行排序

Queue接口:隊列接口

LIst接口常用的子類:ArrayList、LinkList、Vector

ArrayList:

驗證增加數據的操作:

package com.list;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class ArrayLiatDemo01 { public static void main(String[] args) { List<String> allList = null; //定義List對象 Collection<String> allCollection = null; //定義Collection對象 allList = new ArrayList<String>(); //實例化List對象,只能是String類型 allCollection = new
ArrayList<String>(); //實例化Collection對象,只能是String類型

/*List<String> allList = new ArrayList<String>();
Collection<String> allCollection = new ArrayList<String>();*/

        allList.add("hello");                     //從Collection繼承的方法
        allList.add(0
,"world"); //List的擴充方法 System.out.println(allList); //輸出集合中的內容 allCollection.add("YQ"); //增加數據 allCollection.add("www.qq.com"); //增加數據 System.out.println(allCollection); //輸出集合中的內容 allList.addAll(allCollection); //從Collection繼承的方法,增加一組對象 allList.addAll(0,allCollection); //List自定義方法,增加一組對象 System.out.println(allList); //輸出對象,調用ToString()方法 } }
[world, hello]
[YQ, www.qq.com]
[YQ, www.qq.com, world, hello, YQ, www.qq.com]

從運行結果可以發現List中的add(int index, E element)方法可以在集合中的指定位置添加元素,而其他的兩種add()方法只能是在集合的最後進行元素的追加。

刪除對象:

package com.list;

import java.util.ArrayList;
import java.util.List;

public class ArrayListDemo02 {
    public static void main(String[] args) {
        List<String> allList = new ArrayList<String>(); //聲明LIst對象,並實例化List對象,且只能是String類型
        allList.add("hello");                           //添加元素
        allList.add(0, "world");                        //此方法為List擴展的增加方法
        System.out.println(allList);
        
        allList.add("YQ");                              //增加元素
        allList.add("www.baidu.com");                   //增加元素
        System.out.println(allList);
        
        allList.remove(0);                              //移除指定位置的元素
        System.out.println(allList);
        allList.remove("hello");                        //移除指定內容的元素
        System.out.println(allList);
        
    }

}
[world, hello]
[world, hello, YQ, www.baidu.com]
[hello, YQ, www.baidu.com]
[YQ, www.baidu.com]

輸出全部元素:

package com.list;

import java.util.ArrayList;
import java.util.List;

public class ArrayListDemo03 {
    public static void main(String[] args) {
        List<String> allList = new ArrayList<String>(); //聲明LIst對象,並實例化List對象,且只能是String類型
        allList.add("hello");                           //添加元素
        allList.add(0, "world");                        //此方法為List擴展的增加方法
        System.out.println(allList);
        
        allList.add("YQ");                              //增加元素
        allList.add("www.baidu.com");                   //增加元素
        System.out.println(allList);
        
        System.out.println("由前向後輸出");
        for(int i=0;i<allList.size();i++)
        {
            System.out.printf(allList.get(i)+",");
        }
        System.out.println("\n由後向前輸出");
        for(int i=allList.size()-1;i>=0;i--){
            System.out.printf(allList.get(i)+",");
        }
    }

}
[world, hello]
[world, hello, YQ, www.baidu.com]
由前向後輸出
world,hello,YQ,www.baidu.com,
由後向前輸出
www.baidu.com,YQ,hello,world,

測試其他操作:

package com.list;

import java.util.ArrayList;
import java.util.List;

public class ArrayListDemo04 {
    public static void main(String[] args) {
        List<String> allList = new ArrayList<String>(); //聲明LIst對象,並實例化List對象,且只能是String類型
        System.out.printf("集合操作前是否為空:"+allList.isEmpty()+"\n");
        allList.add("hello");                           //添加元素
        allList.add(0, "world");                        //此方法為List擴展的增加方法
        System.out.println(allList);
        
        allList.add("YQ");                              //增加元素
        allList.add("www.baidu.com");                   //增加元素
        System.out.println(allList);
        
        String str[] = allList.toArray(new String[] {});//指定的泛型類型
        System.out.println("指定數組類型:");               //輸出字符串中的內容
        for(int i=0;i<str.length;i++){
            System.out.printf(str[i]+"");
        }
        
        System.out.println("\n返回對象數組:");             
        Object obj[] = allList.toArray();               //返回對象數組
        for(int i=0;i<obj.length;i++){                  //輸出對象數組內容
            System.out.printf(obj[i]+"");
        }
        
        
        System.out.print("\n");
        List<String> allSub=allList.subList(1,2);       //該方法返回的是父list的一個視圖,從fromIndex(包含),到toIndex(不包含)
        System.out.printf("結合截取:");
        for(int i=0;i<allSub.size();i++){
            System.out.printf(allList.get(i)+"");
        }
        System.out.print("\n");
        System.out.println(allList.contains("YQ")?"YQ字符串存在!":"YQ字符串不存在!");
        System.out.println("YQ字符串的位置:"+allList.indexOf("YQ"));
        System.out.println("集合操作後是否為空:"+allList.isEmpty());
    }

}
集合操作前是否為空:true
[world, hello]
[world, hello, YQ, www.baidu.com]
指定數組類型:
world、hello、YQ、www.baidu.com、
返回對象數組:
world、hello、YQ、www.baidu.com、
結合截取:world、
YQ字符串存在!
YQ字符串的位置:2
集合操作後是否為空:false

Vector子類:

package com.list;

import java.util.List;
import java.util.Vector;

public class VectorDemo01 {
	public static void main(String[] args) {
		/*List<String> allList = null;
		allList = new Vector<String>();
		
		allList.add("hello");
		allList.add(0,"world");
		allList.add("YQ");
		allList.add("www.baidu.com");*/
		
		Vector<String> allList = new Vector<String>();
		allList.add("hello");
		allList.add(0,"world");
		allList.addElement("YQ");
		allList.addElement("www.baidu.com");
		
		for(int i=0;i<allList.size();i++)
		{
			System.out.printf(allList.get(i)+"、");
		}
	}

}

1 world、hello、YQ、www.baidu.com、

ArrayLiat與Vector的區別:

序號 比較點 ArrayList Vector
1 推出時間 JDk1.2之後推出,屬於新的操作類 JDK1.時推出的,屬於舊的操作類
2 性能 采用異步處理方式,性能更高 采用同步處理方式,性能更低
3 線程安全 屬於非線程安全的操作類 屬於線程安全的操作類
4 輸出 只能使用Iterator、foreach輸出 可以使用Iterator、foreach、Enumeration輸出

從實際開發來看,ArrayLiat類使用的較多。

LinkedList子類:

為鏈表增加數據:

 1 package com.list;
 2 
 3 import java.util.LinkedList;
 4 
 5 public class LinkedListDemo01 {
 6     public static void main(String[] args) {
 7         LinkedList<String> link = new LinkedList<String>();
 8         link.add("A");
 9         link.add("B");
10         link.add("C");
11         System.out.println("初始化鏈表:"+link);
12         link.addFirst("X");
13         link.addLast("Y");
14         System.out.println("增加表頭表尾後的鏈表:"+link);
15         
16         System.out.print("以FIFO方式輸出:");
17         for(int i=0;i<link.size();i++){
18             System.out.printf(link.get(i)+",");
19         }
20         
21         System.out.printf("\n element()方法找到表頭:"+link.element());
22         System.out.printf("\n"+link);
23         System.out.printf("\n prrk()方法找到表頭:"+link.peek());
24         System.out.printf("\n"+link);
25         System.out.printf("\n poll()找到表頭並刪除表頭:"+link.poll());
26         System.out.printf("\n"+link);
27     }
28 
29 }
1 初始化鏈表:[A, B, C]
2 增加表頭表尾:[X, A, B, C, Y]
3 以FIFO方式輸出:X,A,B,C,Y,
4  element()方法找到表頭:X
5 [X, A, B, C, Y]
6  prrk()方法找到表頭:X
7 [X, A, B, C, Y]
8  poll()找到表頭並刪除表頭:X
9 [A, B, C, Y]

認真看過此篇的小夥伴,如果對你有收獲,請點擊旁邊的小手推薦一下,如果有誤,歡迎指正,謝謝!

版權聲明:此篇為本人原創,轉載請標明出處https://www.cnblogs.com/YQian/p/10843218.html

我的博客園地址:https://www.cnblogs.com/YQian/

Collection中的接口:List、Set、SortedSet、Queue、第一篇