CHAPTER-11 集合

集合




为什么使用集合框架?

如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象–可以使用Java集合框架

Java集合框架包含的内容

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

CHAPTER-11 集合

Iteratior:接口类

ArrayList:具体实现类

Collection:所有Java集合框架的父接口

Collections:操作集合的工具类

Utilities:算术类。提供了对集合进行排序、遍历等多种算法实现

Collection接口:

Collection接口存储一组:不唯一、无序的接口

List接口存储一组:不唯一、有序(插入顺序)的对象

Set接口存储一组:唯一、无序的对象

Map接口存储一组链值对象,提供Key到value的映射

Collection接口常用通用方法还有:

clear() 、 isEmpty() 、 iterator() 、toArray()

List接口:的实现类

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高

LinkedList采用链表存储。插入、删除元素时效率比较高

ArrayList常用方法

方法名 说明
bollean add(Object o) 在列表的末尾顺序添加元素,起始索引位置从0开始
void add(int index,Object o) 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
int size() 返回列表中的元素个数
Object fet(int index) 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
boolean contains(Object o) 判断列表中是否存在指定元素
boolean remove(Object o) 从列表中删除元素
Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始

LinkedList常用方法

方法名 说明
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一个元素
Object getLast() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removeLast() 删除并返回列表中的最后一个元素

Set接口:

HashSet是Set接口常用的实现类

Set中存放对象的引用
Set set = new HashSet();
String s1 = new String("java");
String s2 = s1;
String s3 = new String("JAVA");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());
Set接口如何判断加入对象是否已经存在?

采用的对象的equals()方法比较两个对象是否相等

Set接口不存在get()方法
newsTitleSet.get(0);

迭代器Iterator

如何遍历Set集合?

方法一:通过迭代器Iterator实现遍历

获取Iterator:Collection接口的iterator()方法

Iterator的方法

boolean hasNext():判断是否存在另一个可访问的元素

Object next():返回要访问的下一个元素

方法二:增强型for循环

Map接口

与Collection没有继承关系,是一个独立的接口

Map接口专门处理键值映射数据的存储,可以根据键值实现对值的操作

最常见的实现类是HashMap

import java.util.HashMap;
import java.util.Map;

//存储国家的英文简称(键) 国家全程(值) (键-值对)
public class MapDemo {
	public static void main(String[] args) {
		Map countries = new HashMap();
		
		//往Map集合中添加键值对
		countries.put("CN", "*");
		countries.put("RU", "俄罗斯联邦");
		countries.put("FR", "法兰西*");
		countries.put("US", "美利坚*");
		
		//获取Map的元素组数
		System.out.println(countries.size());
		
		//通过某个键获取对应的值
		String cnStr = (String)countries.get("CN");
		System.out.println(cnStr);
		
		//判断Map中是否包含某个键
		boolean flag = countries.containsKey("US");
		System.out.println("集合中是否包含us?"+flag);
		
		//删除特定键对应的键值对
		countries.remove("US");
		System.out.println(countries.size());
		
		flag  = countries.containsKey("US");
		System.out.println("集合中是否包含US?"+flag);
		
		//分别显示Map中键集、值集 和键值对集
		System.out.println(countries.keySet());
		System.out.println(countries.values());
		System.out.println(countries);
		
		//清空
		countries.clear();
		if(countries.isEmpty()) {
			System.out.println("Map数据已经清空!");
		}
	}
}

t.println(countries.values());
System.out.println(countries);

	//清空
	countries.clear();
	if(countries.isEmpty()) {
		System.out.println("Map数据已经清空!");
	}
}

}

上一篇:CSAPP读书笔记:Chapter I


下一篇:Study Notes of CS:APP (Till 1.3, Regularly Updated)