Java集合框架总结

一、概述   

        在Java语言中,Java语言的设计者对常用的数据结构和算法做了下规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据库结构(算法)统称为Java集合框架。Java程序员在具体应用时,不必考虑数据结构和算法实现的细节,只需要用这些类创建出来的一些对象就可以直接应用。

二、集合框架层次结构

       Collection是所有集合的根接口,根据不同的环境和需求,Collection又细分为Set、List、Queue等子接口,在Java.util包中提供了所有使用的集合类。如图所示:

       
        Collection接口方法,如图:
         

三、List接口
        List是有序的Collection,使用此接口能够精确的控制每一个元素的插入位置,及使用索引访问List中的元素,List存储元素是有序的、可重复。除了具备Collection接口必备的Iterator()方法外,List还提供了listIterator()方法返回一个ListIterator接口,和标准的Iterator方法相比,多了add()之类的方法,允许添加、删除元素,还可以向前向后遍历。  实现List接口常用类:ArrayList、Arraylist、Vector、Stack。
        List接口扩展的方法:
        

       1、ArrayList类
             特点:1)元素可以重复;
                         2)非同步的集合类;
                         3)实现了ICollection和List接口;
                         4)容量可以动态增加和减少,大小可变,初始容联为10;
                         5)插入、删除效率低下,查询效率高。
             实例代码如下:
           
public static void myArrayList() {
   //实例化ArrayList,指定操作泛型为String数据类型
     LisT list=new ArrayList();
     list.add("周星驰");
     list.add("刘德华");
     list.add("刘德华");
     list.add("周润发");
     list.add(0, "周杰伦");// 根据索引位置来添加元素
     System.out.println("根据索引取出元素:" + list.get(1));
     System.out.println("查询元素个数:" + list.size());
     
   //1、使用迭代器将ArrayList中的元素取出
     Iterator iter = list.iterator();
     while (iter.hasNext()) {
		// 使用String接收返回值
		String str = iter.next();
		// 打印
		System.out.println(str);
     }
     
   //2、使用迭代器将ArrayList中的元素取出
     ListIterator listIter = list.listIterator();
     while (listIter.hasNext()) {
		System.out.println("正向迭代元素:"+listIter.next()+"\t"
		                   +"正索引:"+listIter.nextIndex());
     }
     while (listIter.hasPrevious()) {
	    System.out.println("反向迭代元素:"+listIter.previous()+"\t"
	    "反索引:"+listIter.previousIndex());
     }
    
    //3、使用for循环将ArrayList中元素取出
      for(String str1 : list){
          System.out.println("for循环取出:"+str1)
      }
}
     2、LinkList类
             特点:1)插入、删除元素比较快,查询效率低;
                         2)元素可以为null;
                         3)双向链表、堆栈、队列;
                         4)非同步的集合类。
             LinkList扩展的方法:
             
              实例代码如下:
             
public static void myLinkedList(){

   LinkedList list = new LinkedList();
   list.add("1");
   list.add("2");
   list.add("3");

   // 将元素插入到列表开头
   list.addFirst("jok");
   // 将元素插入到列表结尾
   list.addLast("4");

   // 删除第一个元素
   list.removeFirst();
   // 删除最后一个元素
   list.removeLast();

   System.out.println("获取第一个元素:" + list.getFirst());
   System.out.println("获取最后一个元素:" + list.getLast());
   
   //使用ListIterator迭代器打印
   ListIterator listiter=list.listIterator();
   while(listiter.hasNext()){
       System.out.println(listiter.next());
   }
}
三、Map接口
         Java为数据结构的映射定义了一个接口java.util.map,它有四个实现类,分别是HashMap、Hashtable、LinkedHashMap、TreeMap。
         特点:主要存储键值对,根据键(key)获取值(value),键(key)不允许重复,但值(value)可重复。
         方法概要:
         
      
        1、HashMap
              特点:底层是哈希数据表结构,可以使用Null作为键或者值,效率比较高,该集合线程不是同步的。
              代码实例:
             
// 创建HashMap集合类,其操作泛型为Sring数据类型
	HashMap map = new HashMap();
	map.put("01", "关羽");
	map.put("02", "关羽");
	map.put("03", "关羽");
/**
 * Map集合获取元素的两种方式,(原理:将map集合转换成set,再使用迭代器)
 * 1、keySet:将map中所有的键存入到set(set具备迭代器)集合,在根据get方法,
 *    获取每一个健对应的值 。 
 * 2、entrySet
 */
// 1、通过KeySet()方法获取map集合中所有键Set集合
    Set set = map.keySet();
    Iterator iter = set.iterator();
    while (iter.hasNext()) {
    	// 获取键key
    	String key = iter.next();
    	// 通过键key获取值(value)
    	String value = map.get(key);
    	System.out.println("key:" + key + " " + "value:" + value);
    }
// 2、使用for()循环获取key-value
	for (String key : set) {
		System.out.println("键:" + key + " " + "值:" + map.get(key));
	}
// 3、使用entrySet()方法,循环获取key-value
	Set> entrySet = map.entrySet();
	Iterator> iter1 = entrySet.iterator();
	// 简写: Iterator> iter1=map.entrySet().iterator();
	while (iter1.hasNext()) {
		Entry en = iter1.next();
		String key = en.getKey();
		String value = en.getValue();
		System.out.println("键1:" + key + " " + "值1:" + value);
	}
	// 获取Map值(value)视图
	Collection coll = map.values();
	Iterator iter2 = map.values().iterator();
	while (iter2.hasNext()) {
		System.out.println("遍历获取value值:" + iter2.next());
	}
              
             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值