java集合框架课 总结

   今天老师为我们讲了集合框架的一些内容,下面我从这几个方面进行总结。

  1.什么是集合框架?
 
   2.list,set,map三者的特点及基本使用。
  
   ①.熟悉List接口,了解何时以及如何使用ArrayList或者LinkedList来存储元素
   ②熟悉Set接口,了解何时及如何使用HashSet,LinkedHashSet或TreeHashSet来存储元素
   ③理解Collection和Map的区别,知道何时及如何使用HashMap,LinkedHashMap,TreeHashMap来存储
[/color]



====================================================================================================================================================================



[color=brown]1.集合框架是什么?

      了解集合框架之前,我们先得知道什么是集合,所谓集合是指把具有相同性质的一类东西,汇聚成一个整体,这样就可以称为集合。有了集合的概念,那么什么是集合框架呢?集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

2.list,set,map三者的特点及基本使用。

① List:List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以在List容器中放入数据或者取出数据,数据的存储是有序的(根据写入的先后顺序),并且我们所写入的数据是可以出现重复情况的。ArrayList相对LinkList在随机读取速度上是有优势的,它的随机读取速度是非常之快的。而LinkList它是以链表的形式进行存储的,因此在插入和删除操作中具有很大优势。我们在对Lits进行数据查找时,根据的是数据所在的索引。 下面是一段关于ArrayList一些简单操作的代码。
import java.util.List;
import java.util.ArrayList;

import javax.swing.text.html.HTMLDocument.Iterator;

public class listdemo {
	public static void main(String args[]) {
		List<String> list = GreatArraylist();
		List<String> list2 = GreatArraylist();
		// 在指定位置添加一个元素
		list.add(3, "数据100");
		// 添加一个collection 中的所有元素
		list.addAll(list2);
		// 从列表删除所有元素
		//list.clear();
		// 判断列表是否包含指定元素    包含返回true
		System.out.println(list.contains("数据1"));
		//判断列表是否包含指定 collection中所有元素 
		System.out.println(list.contains(list));
		//判断是否与指定对象相等       相等返回true
		System.out.println(list.equals(list));
		//返回列表的hash值
		System.out.println(list.hashCode());
		//找元素,找到返回其索引,没找到返回-1
		System.out.println(list.indexOf(list2));
		//迭代器
		//Iterator ite=(Iterator) list.iterator();
		//ite.next();
		//返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
		System.out.println(list.lastIndexOf("数据100"));
		//移除
		System.out.println(list.remove(3));
		//

		printArraylist(list);
	}

	/**
	 *  创建一个Arraylist
	 * @return
	 */
	public static ArrayList<String> GreatArraylist() {

		ArrayList<String> list = new ArrayList<String>();
		// 给List添加数据
		for (int i = 0; i < 10; i++) {
			list.add("数据" + i);
		}
		// 返回一个Arraylist对象
		return list;

	}

	/**
	 *  打印输出
	 * @param list
	 */
	public static void printArraylist(List<String> list) {
		System.out.println("List的长度为:" + list.size());
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
	}
}


②Set:Set和List一样,也是对Collection接口进行了扩充,它的具体实现类常用的有HashSet、LinkedHashSet、TreeSet。Set与List的不同之处在于:Set中的元素不能重复,数据存放也是无序的,并且它是按值存取的。  下面有一段示意代码,假设已经存在一个HashSet set,我们要求打印输出其内容:
public static void printSet(Set<String> set){
		Iterator<String> iter = set.iterator();//得到Set集合的迭代器对象
		while(iter.hasNext()){//判断Set集合中是否还有元素可以进行迭代
			//得到集合中的数据
			String str = iter.next();//取出迭代器中的元素对象
			System.out.println(str);//输出
		}
	}


③Map:Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。  如下是一段简单的HashMap操作的代码,我们对其赋值再将其打印出来。
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import cn.netjava.lesson03.Student;

public class MapDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Map<String,Student> map = MapDemo.createMap();
		MapDemo.printMap(map);
		System.out.println("==========================");
		map.put("ID100", new Student("张三",5));
		map.put("ID100", new Student("李四",10));
		map.remove("ID1");
		MapDemo.printMap(map);
	}
	
	/**
	 * 创建一个一个Map集合框架的对象
	 */
	public static Map<String,Student> createMap(){
		Map<String,Student> map = new HashMap<String,Student>();//实例化一个集合对象
		//循环给List集合中添加数据
		for(int i=0;i<10;i++){
			map.put("ID"+i,new Student("姓名"+i,i));
		}
		return map;
	}
	
	public static void printMap(Map<String,Student> map){
		//获取到key的Set集合对象
		Set<String> set = map.keySet(); 
		Iterator<String> iter = set.iterator();//得到Set集合的迭代器对象
		while(iter.hasNext()){//判断Set集合中是否还有元素可以进行迭代
			//得到集合中的数据
			String key = iter.next();//取出迭代器中的元素对象
			Student stu = map.get(key);//根据Key来获取Map的Value
			System.out.println("Key="+key+"    Value="+stu.toString());//输出
		}
	}

}

     

猜你喜欢

转载自wuzexin530.iteye.com/blog/1729073