Java集合框架
Collection方法举例
import java.util.*; public class CollectionTest { public static void main(String args[]) { Collection c=new ArrayList(); c.add("hello world"); c.add(new Integer(100)); c.add(new Float(99.9f)); System.out.println(c.size()); System.out.println(c); } }
Set接口与集合操作相关的几个方法
Set s1=new HashSet(); Set s2=new HashSet(); s1.add("a");s1.add("b");s1.add("c"); s2.add("b");s2.add("c");s2.add("d"); Set s3=new HashSet(s1); s3.retainAll(s2);//求交集 Set s4=new HashSet(s2); s4.addAll(s1);//求并集 System.out.println(s3); System.out.println(s4);
List接口
List是Collection的子接口,实现List接口的容器中存放的对象是 有顺序的,而且可以重复。
List容器中存放的对象都有一个整数型的序号,记录该对象在容器 中的位置,可以根据序号来访问容器中的元素。 JDK提供实现List接口的类有ArrayList、LinkedList等。
Map接口的实现类-HashMap
java.util.HashMap类实现了java.util.Map接口,基 于哈希表实现“键”-“值”对的映射关系。 HashMap不确定“K”-”value”对的先后顺序,允许 使用null “K”和null”value”。 影响HashMap性能的两个因素: 初始容量(Initial Capacity) 加载因子(Load Factor) (小于1的数)
List接口的实现类-ArrayList
java.util.ArrayList实现了List接口,用于描述长度可变的数 组列表(底层采用数组实现)。 ArrayList允许元素取值为null,提供了一些新增的方法来操作 列表的容量的大小。 public ArrayList()(默认大小是10) public ArrayList(int initialCapacity) public void ensureCapacity(int minCapacity) public void trimToSize()
见源文件: HashSet/SetTest2.java
Set接口的实现类-TreeSet
TreeSet描述的是Set的一个变体-可实现排序功 能的集合。 将对象插入到TreeSet中时,会按照某种比较规 则将对象插入到一个有序序列中,以保证 TreeSet集合中的对象序列保持“升序”排列。
见源文件:TreeSet/TreeSetTest1.java
见源文件:ArrayListTest.java
List接口的实现类-Vector
java.util.Vector实现了List接口,用于描述长度可变的 数组向量(底层采用数组实现)。 与ArrayList的区别:Vector是线程安全的(同步),用在 多线程环境中,运行效率慢。ArrayList不是线程安 全的,用在单线程环境中。
ArrayList举例
ArrayList list=new ArrayList(6); list.add("oyhj"); list.add(new Integer(10)); list.add(new Double(10.5)); System.out.println(list.size()); Object item[]=list.toArray(); for(int i=0;i<item.length;i++) System.out.println(item[i]); list.trimToSize();
Java集合框架
本章内容
1. Java集合框架概述 2.List接口以及实现类 3.Set接口以及实现类 4.Map接口以及实现类 5.Boxing/unBoxing 6.Iterator以及Enumeration接口 7.Collections和Arrays类
集合框架的概念
集合就是将若干用途相同、近似的“数据”结合成一个整体。
parable
Hashtable
Arrays
Collections
Collection接口中的方法
(1) int size(); (2) boolean isEmpty(); (3) void clear(); (4) boolean contains(Object element); (5) boolean add(Object element); (6) boolean remove(Object element); (7) Iterator iterator(); (8) boolean containsAll(Collection c); (9) boolean addAll(Collection c) (10) boolean removeAll(Collection c) (11) boolean retainAll(Collection c) (12) Object[] toArray();
Map接口
实现Map接口的类用来存储”键-值”对。 可理解为一张二维表,这个二维表只有两列,一列是Key,一列是Value。 Map中存储的“键-值”对由键来标识,所以键不能重复。 Map接口的实现类有HashMap和TreeMap。 Map接口的常用方法: Object put(Object key,Object value) Object get(Object key) Object remove(Object key) boolean containsKey(Object key) boolean containsValue(Object value) int size() boolean isEmpty() void putAll(Map t) void clear()
Set接口
Set接口是Collection的子接口,Set接口没有提供新增 的方法,但实现Set接口的容器中元素是没有顺序的且 不可以重复。 Set容器可以与数学中的“集合”概念相对应。 JDK中提供的实现Set接口的类有HashSet、TreeSet等。
HashSet
HashSet hs=new HashSet(); hs.add("first"); hs.add("second"); hs.add("third"); hs.add("fourth"); hs.add("first"); hs.add(new Date()); System.out.println("哈希表的大小:"+hs.size()); System.out.println(hs); 见源文件: HashSet/HashSetTest.java
集合从体系上分为三种: (1) 列表(List):t):Set集合不区分元素的顺序,不允许包含相同的元素。 (3) 映射(Map):Map集合保存的”键”-“值”对,“键”不能重 复,而且一个“键”只能对应一个“值”。 Java集合中只能保存引用数据类型,也就是保存的是对象的地 址,而非对象本身。集合中元素相当于引用类型的变量。
Iterator接口
Iterator(称作迭代器)接口主要提供了对容器中元 素进行遍历的方法。 所有实现了Collection接口的类都有一个 iterator()方法来返回一个实现了Iterator接口 的类的对象。 该接口中定义了如下抽象方法:
Iterator接口
boolean hasNext() //判断游标右边是否还有元素 Object next() //返回游标右边的元素并将游标移动到该元素后 void remove() //删除游标左边的元素,通常在next()方法之后执行,只执行一 次。
Vector类的新增方法:
public Vector()(默认大小是10) public Object elementAt(int index) public void removeElement(int index) public void insertElement(Object obj,int index) public boolean removeElement(Object obj) public void removeAllElements() public Object toArray()
Object get(int index) Object set(int index,Object obj) void add(int index,Object obj) Object remove(int index) int indexOf(Object obj) int lastIndexOf(Object obj)
Stack类
java.util.Statck继承自Vector类,对应”First In,Last out”的数据结构-栈。
Stack类的常用方法: public Statck() public Object push(Object obj) public Object pop() public Object peek() public boolean isEmpty() public void clear() public int search(Object obj) 见源文件:Stack/StackTest.java