java 常用的三大集合類


一、Set集合。其主要實現類有HashSet、TreeSet。存放對象的引用,不允許有重復對象。 

代碼:

  public class SetTest {

    public static void main(String[] args) {
      Set set=new HashSet();
       //添加數據
        set.add("abc");
      set.add("cba");
      set.add("abc");//故意重復
      set.add(123);
      set.add(true);
  
      System.out.println("集合元素個數:"+set.size());
        //遍歷出集合中每一個元素
       Iterator it=set.iterator();
       while(it.hasNext()){
         System.out.println(it.next());
        }
     }
  }

通過java的equals()方法判別。如果有特殊需求須重載equals()方法。

1.HashSet(),調用對象的hashCode()方法,獲得哈希碼,然后再集合中計算存放對象的位置。通過比較哈希碼與equals()方法來判別是否重復。所以,重載了equals()方法同時也要重載hashCode()方法。

2.TreeSet(),繼承ShortedSet接口,能夠對集合中對象排序。默認排序方式是自然排序,但該方式只能對實現了Comparable接口的對象排序,java中對Integer、Byte、Double、Character、String等數值型和字符型對象都實現了該接口。 
如果有特殊排序,須重載該接口下的compareTo()方法或通過Comparator接口的實現類構造集合。 

二、List集合,其主要實現類有LinkedList、ArrayList,前者實現了鏈表結構,后者可代表大小可變的數組。List的特點是能夠以線性方式儲蓄對象,並允許存放重復對象。List能夠利用Collections類的靜態方法sort排序。sort(List list)自然排序;sort(List listm,Comparator codddmparator)客戶化排序。

代碼:

  List:線性集合接口,有序;ArrayList:動態數組[可變長度的動態數組];LinkedList:鏈表結構的集合

  public class ListTest {

     //ArrayList
     static void testOne(){
      List list=new ArrayList();
       //添加數據
       list.add("abc");
       list.add("cba");
       list.add(123);
       list.add(0,"fist");
       //查看集合長度
       System.out.println("存放"+list.size()+"個元素");
       list.remove(0);//刪除第一個元素
       //查看集合中是否包含cba
       if(list.contains("cba")){
        System.out.println("包含元素cba");
    }
  
       //取出集合中第二個元素
       System.out.println("第二個元素是:"+list.get(1));
  
       //取出集合中所有元素
       for (int i = 0; i < list.size(); i++) {
         System.out.println(list.get(i));
      }
     }
 
      //LinkedList
      static void testTwo(){
      LinkedList list=new LinkedList();
      //添加元素
      list.add("aaaa");
      list.add(123123);
      list.addFirst("1111111");
      list.addLast("2222222");
      list.add("33333333");
  
      System.out.println("元素個數:"+list.size());
      //取出第三個元素
      System.out.println("第三個元素是:"+list.get(2));
  
      //第一個元素
      System.out.println("第一個元素:"+list.getFirst());
      System.out.println("最后一個元素:"+list.getLast());
  
      //刪除第一個元素
      list.removeFirst();
  
      for (Object object : list) {
        System.out.println(object);
      }
     }
 
 
    public static void main(String[] args) {
      //testOne();
      testTwo();
     }
  }

三、Map集合,其主要實現類有HashMap、TreeMap。Map對值沒有唯一性要求,對健要求唯一,如果加入已有的健,原有的值對象將被覆蓋。HashMap類按照哈希算法來存取鍵對象,可以重載equals()、hashCode()方法來比較鍵,但是兩者必須一致。TreeMap,可自然排序,也可通過傳遞Comparator的實現類構造TreeMap。

代碼:

  Map:鍵值對存儲結構的集合,無序

  public class MapTest {

    public static void main(String[] args) {
       //實例化一個集合對象
       Map map=new HashMap();
       //添加數據
       map.put("P01", "zhangSan");
       map.put("P02", "Lucy");
       map.put("PSex", "男");
       map.put("PAge", "39");
       map.put("PAge", "22");//key,重復會被后面的覆蓋
  
       //判斷是否有一個key為PSex
       if(map.containsKey("PSex")){
        System.out.println("存在");
        }
      System.out.println("集合大小:"+map.size());
      System.out.println("輸出key為PAge的值:"+map.get("PAge"));
  
      //遍歷出Map集合中所有數據
      Iterator it=map.keySet().iterator();
      while(it.hasNext()){
      String key=it.next().toString();
      System.out.println("key="+key+",value="+map.get(key));
    }
      /*
      Set set=map.keySet();//取出map中所有的key並封裝到set集合中
      Iterator it=set.iterator();
      while(it.hasNext()){
      String key=it.next().toString();
      System.out.println("key="+key+",value="+map.get(key));
    }
      */
    }
  }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM