1. 程式人生 > >JAVA--集合(Collection)

JAVA--集合(Collection)

集合:

----------| Collection
--------------| List   元素有序,可重複 
-------------------| ArrayList  查詢速度快,增刪慢
-------------------| Linkedlist  增刪快,查詢慢
--------------| Set    元素無序,不可重複

方法:

1:add() 將指定物件儲存到容器中
 add 方法的引數型別是Object 便於接收任意物件
2:addAll() 將指定集合中的元素新增到呼叫該方法和集合中
3:remove() 將指定的物件從集合中刪除
4:removeAll() 將指定集合中的元素刪除
5:clear() 清空集合中的所有元素
6:isEmpty() 判斷集合是否為空
7:contains() 判斷集合何中是否包含指定物件    
8:containsAll() 判斷集合中是否包含指定集合
         使用equals()判斷兩個物件是否相等 
 9:size()    返回集合容器的大小
10: toArray()   集合轉換陣列

樣例程式碼:

public class Demo1{

    public static void main(String[] args) {
        /*
        Collection  d = new ArrayList();
        d.add("a");
        d.add(12);
        //System.out.println("是否新增成功"+d.add(3.14)); //add() 返回boolean

        Collection c = new ArrayList();
        c.add(3.14);
        c.add('v
'); c.add(12); System.out.println("集合c "+c.size()); System.out.println("集合d "+d); //d.addAll(c); //d.clear(); //System.out.println("刪除成功嗎?"+d.remove(12)); //remove() 返回boolean //d.removeAll(c); // 在d中刪除與c相交的元素。 d.retainAll(c); // 在d中保留與c相交的元素,刪除其他元素
System.out.println("集合c "+c); System.out.println("集合d "+d); */ /*Collection a = new ArrayList(); a.add("小明"); a.add("小樑"); System.out.println("判斷是否為空"+a.isEmpty()); System.out.println("判斷是否包含某個元素"+a.contains("笑話"));*/ Collection a = new ArrayList(); a.add("小明"); a.add("小花"); a.add("小華"); a.add("小紅"); /* * Object[] arr = a.toArray(); for(int i=0; i<arr.length ; i++){ System.out.print(arr[i]+","); } System.out.println(a); */ Iterator it = a.iterator(); it.next(); it.remove(); System.out.println(a); while(it.hasNext()){ /*it.next(); it.remove();*/ System.out.println("元素 :" + it.next()); } } }

List

方法:

1.add(int index,E element);
2.addAll(int index,Collection c);
3.get(int index);
4.indexOf(object o);
5.lastIndexOf(object o);
6.sunList(int start,int end);
7.set(int index,E element)
8.listIterator();
  注意:在迭代器迭代元素的過程中,不允許用集合物件改變集合內的元素的個數,否則會丟擲異常(ConcurrentModificationException),
  如需要新增和刪除元素,只能用迭代器的方法操作
9.hasPrevious();   判斷是否存在上一個元素
10.previous()  當前指標先向上移動一個,然後再取出當前指標指向的元素。
11.next()  先取出取出當前指標指向的元素,然後指標再向下移。

樣例程式碼:

public class Demo1{
    public static void main(String[] args) {
        /*List list = new ArrayList();
        list.add("張三");
        list.add("李四");
        list.add("王五");
        list.add("趙六");
        list.add("趙六");
        //list.add(1,"xiaowang");
        List list2 = new ArrayList();
        list2.add("小名");
        list2.add("小紅");
        list.addAll(1,list2);
        System.out.println(list.get(1));
        System.out.println(list.indexOf("張三"));
        System.out.println(list.lastIndexOf("趙六"));
        System.out.println(list.subList(1,3));
        list.set(1,"小云");
        obj[] arr =list.toArray();
        System .out.println(arr.toString);*/    
        List list = new ArrayList();
        list.add("張三");
        list.add("李四");
        list.add("王五");
        list.add("趙六");
        list.add("趙六");
        //System.out.println(list);
        for(int i=0; i<list.size(); i++){
            System.out.println(list.get(i));
        }
        ListIterator it = list.listIterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        while(it.hasPrevious()){
            System.out.println(it.previous());
        }   
    }
}

ArrayList

ArrayList底層維護了一個object陣列實現,使用無參建構函式時,
object陣列預設容量為10,當長度不夠時,自動增長0.5倍

樣例程式碼:

// 刪除集合中的重複元素
import java.util.ArrayList;
import java.util.ListIterator;
class Book{
    String name;
    int id;
    public Book(String name,int id){
        this.name = name;
        this.id = id;
    }
    public String toString(){
        return "["+this.name+","+this.id+"]";
    }
    public boolean equals(Object obj){
       Book book = (Book)obj;
       return book.id==this.id;
    }
}

public class Demo3{
    public static void main(String[] args) {
        ArrayList  list = new ArrayList();
        list.add(new Book("Java程式設計",110));
        list.add(new Book("php程式設計",330));
        list.add(new Book("C++程式設計",440));
        list.add(new Book("javascript程式設計",220));
        list.add(new Book("C程式設計",110));
        ListIterator it=list.listIterator();
        ArrayList list1=new ArrayList();
        while(it.hasNext()){
            Book book = (Book)it.next();
            if(!list1.contains(book)){
                list1.add(book);
            }
        }
        System.out.println(list1);  
    }
}

Linkedlist

方法:
1.addFirst(E e) 
2.addLast(E e) 
3.getFirst() 
4.getLast() 
5.removeFirst() 
6.removeLast() 

樣例程式碼: