Java中的集合

Java中的集合

Collection容器

Colletion接口定義了存取一組對象的方法,其子接口Set和List分別定義了存儲方式。

Collection接口中定義的方法

int size()

獲取集合容器中元素的個數

boolean isEmpty()

集合容器是否爲空,即沒有元素

void clear()

清空集合容器中的所有元素

boolean contains(Objectelement)

集合容器中是否存在某個元素

boolean add(Object element)

向集合容器中添加⼀個元素

boolean remove(Objectelement)

從集合容器中移除⼀個元素

booleancontainsAll(Collection c)

集合容器中是否包含⼀個容器中所有的元素

boolean addAll(Collection c)

將傳⼊的集合容器c中的所有元素添加到當前的集合容器

boolean removeAll(Collectionc)

從當前集合容器中移除集合容器c中的所有元素

boolean retainAll(Collectionc)

當前集合容器和傳⼊的集合容器之間是否存在交集

Object[] toArray()

將集合容器轉換爲⼀個對象數組

Iterator iterator()

迭代集合容器中的元素

 

Collections工具類

常用的方法

void sort(Collection c)

對集合中的元素按照⾃然順序進⾏排序

Object max(Collection c)

獲取集合中的最⼤元素,並且返回最⼤元素

Object min(Collection c)

獲取集合中的最⼩元素,並且返回最⼩元素

boolean replaceAll(Collectionc, Object ele1, Object ele2)

元素替換,將集合中的所有元素ele1替換成ele2

 

案例:給對象進行排序

用戶類中包含姓名和年齡屬性,要求給多個用戶按照年齡進行排序

 

讓User對象實現Comparable<T>接⼜,實現⽅法

compareTo,⽅法返回值⼤於0表⽰當前對象⼤於⽤於對⽐

的對象,⼩於0表⽰當前對象⼩於⽤於對⽐的對象

packagetest;

 

public classPerson implements Comparable<Person>{

 

   privateString name;

   private int age;

  

   publicPerson(String name, int age) {

    

     this.name =name;

     this.age =age;

   }

 

   publicString getName() {

     return name;

   }

 

   public voidsetName(String name) {

     this.name =name;

   }

 

   public intgetAge() {

     return age;

   }

 

   public voidsetAge(int age) {

     this.age =age;

   }

 

   @Override

   public intcompareTo(Person o) {

     if(this.age>o.getAge()){

        return 1;

     }else{

        return -1;

     }

    

   }

 

   @Override

   publicString toString() {

    

     return "姓名:"+this.name+年齡:"+this.age;

   }

  

  

}

 

2、在測試類中調⽤Collections集合的sort⽅法對集合進⾏排

packagetest;

 

importjava.util.ArrayList;

importjava.util.Collections;

importjava.util.List;

 

importorg.junit.Test;

 

public classTest1 {

 

   @Test

   public voidtest() {

     List<Person> list = newArrayList<Person>();

 

     Person p1 = newPerson("張三",15);

     Person p2 = newPerson("李四",19);

     Person p3 = newPerson("王五",13);

     list.add(p1);

     list.add(p2);

     list.add(p3);

     System.out.println("排序前:");

     for (Personp : list) {

        System.out.println(p.toString());

     }

     System.out.println("***********************");

     System.out.println("排序後:");

     Collections.sort(list);

     for(Person p : list) {

        System.out.println(p.toString());

     }

   }

}

 

List容器

List容器中的數據有順序,並且可以重複

ArrayList集合

add(Object obj)

向List集合容器中添加元素,元素可重複添加

int size()

獲取List集合容器中元素的個數

get(int index)

從List集合中獲取元素,返回Object

remove(Object obj)

從集合中刪除元素

remove(int index)

從集合中刪除元素

clear()

從集合中刪除所有元素

contains(Object obj)

集合中是否存在某個元素,返回boolean值

 

 

示例:

public voidtest1(){

     List l = new ArrayList();//聲明List集合容器

     l.add("abc"); //list容器中添加一個String對象

     l.add(true); //list容器中添加一個Boolean對象

     l.add(1); //list容器中添加一個Integer對象

     int size= l.size(); //獲取集合中元素的個數

     System.out.println("集合中元素個數是:"+size);

     Object obj = l.get(2); //獲取集合中的元素,索引值從0開始

     System.out.println("集合中第3個元素是:"+obj);

     System.out.println(l.toString());

     // l.remove("abc");//刪除集合中的元素

     // l.remove(0); //刪除集合中的元素,索引從0開始

     // l.clear(); //刪除集合中所有元素

     System.out.println("abc是不是在整個集合中?"+l.contains("abc"));

     System.out.println(l.toString());

   }

 

 

 

LinkedList集合

相對於ArrayList,LinkedList類中添加了⼀些處理列表兩端元素的⽅法

addFirst(Object o)

向集合容器的頂部添加元素

addLast(Object o)

向集合容器的尾部添加元素

Object getFirst()

獲取集合容器頂部元素

Object getLast()

獲取集合容器尾部元素

Object removeFirst()

刪除,並返回集合容器頂部元素

Object removeLast

刪除,並返回集合容器尾部元素

 

 

示例:

public voidtest1(){

     LinkedList<Integer> list = newLinkedList<Integer>();

     list.add(1);

     list.add(2);

     list.add(3);

     list.add(4);

     list.add(5);

     list.addFirst(0); //向集合頂部添加一個元素

     list.addLast(100); //向集合尾部添加一個元素

     System.out.println("被刪除的對象是:"+list.removeFirst());//刪除頂端元素,並且返回被刪除的元素

     System.out.println("被刪除的對象時:"+list.removeLast());//刪除尾部元素,並且返回被刪除的元素

     System.out.println("集合的第一個元素是:"+list.getFirst());//獲取頂部元素

     System.out.println("集合中的最後一個元素是:"+list.getLast());//獲取底部元素

     System.out.println(list.toString());

   }

 

 

Set容器

Set容器中的數據對象沒有順序,並且不可重複

HashSet的常用方法

add(Object obj)

向Set集合容器中添加⼀個元素,元素不可重複添加

int size()

獲取Set集合容器中所有元素的個數

iterator()

應⽤迭代器獲取Set集合中所有的元素

remove(Object obj)

從Set集合容器中移除元素

clear()

刪除Set集合容器中的所有元素

contains(Object obj)

判斷Set 集合容器中是否存在某個嚴肅,返回boolean值

 

 

題目:隨機⽣成5個0-10之間的整數,控制檯輸出這5個數字,要求數字不可以重複

1、將隨機⽣成的數字存到Set集合容器中

2、⽤迭代器輸出Set容器中的所有元素

 

Set<Integer>set = new HashSet<Integer>();

     while(true){

     int x =(int) (Math.random()*10);

     System.out.println(x);

     if(set.size()< 5){

        set.add(x);

     }else{ //循環停

        break;

     }

     }

     System.out.println(set.toString());

 

 

Map容器

Map容器定義了儲存“鍵(key)——值(value)映射對”的⽅法,簡稱“鍵值對”

Map提供的常用方法

put(Object key, Object value)

向Map集合中添加⼀條記錄,記錄是以鍵值對的形式存放的

Object get(Object key)

從Map集合中通過key來獲取value

Set keySet()

獲取map集合中所有的key

Set entrySet()

獲取Map集合中所有的記錄(key-value對象Entry)

 

示例:

public voidtest1(){

     Map<String, String> map = newHashMap<String, String>();

     map.put("no1", "Beijing"); // map集合中添加一條記錄

     map.put("no2", "ShangHai");

     map.put("no3", "HangZhou");

     map.put("no4", null);

     map.put(null, "xxxx");

     Set<Map.Entry<String, String>>enSet = map.entrySet();

     Iterator<Map.Entry<String,String>> itr = enSet.iterator();

     while(itr.hasNext()){

     Map.Entry<String, String> entry =itr.next();

     String key = entry.getKey();

     String value = entry.getValue();

     System.out.println(key+ "--" + value);

     }

     System.out.println("************************");

     for(Map.Entry<String,String> entry : map.entrySet()){

     String key = entry.getKey();

     String value = entry.getValue();

     System.out.println(key+ "--" + value);

     }

}

 

注意點:

Hashtable集合

Hashtable和HashMap⽤法⼀致,以下是兩者的不同點

HashMap是線程不安全的,Hashtable是線程安全的

HashMap允許有null的鍵和值,Hashtable不允許

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章