类集:动态对象数组(可以保存多个对象在一个数组之中)或链表
问题:数组长度不可改变,当需要向数组中增加数据的时候需要去考虑对象数组的容量
java类集接口框架
Collection 元素的类集,即对象,每次存放单个对象
子接口: List ( ArrayList LinkedList )
子接口: Set ( HashSet TreeSet )
SortedSet
Map 每次存放一对值:key——> value
SortedMap
Iterator 输出接口,只要是集合都要去是要使用Iterator输出
ListIterator
详解:
Collection 接口:在一般开发中为了清楚的表现处理数据的存放,往往不直接使用Collection
Collection 的子接口List:( ArrayList / LinkedList )
# ArrayList List 使用必须依靠子类——>ArrayList (继承了AbstractList类)
如果使用List,则格式为:List list=new ArrayList();
向对象数组中加入数据 list.add("对象");
向对象数组中移除数据 list.remove("对象");
直接打印System.out.println(all); 结果:[对象1,对象2,对象3]
对象数据输出顺序与加入顺序一致
使用类集的时候在加入对象的时候最好只加入同一类对象
只能让集合中只加入一种对象:JDK1.5支持
List<java.lang.String> list = new ArrayList<java.lang.String>();
需要一个一个对象打印出来的时候,方法有:
1,使用for循环: size()方法求出对象数组的长度
2,使用Iterator输出:因为集合的长度不固定,所以Iterator采用的方法是一个一个判断输出
( 判断是否有下一个元素:public boolean hasNext() )
Iterator iter=list.iterator();
While(iter.hasNext()){
Object obj=iter.next();
System.out.println(obj);
}
(Collection)集合操作的主要方法:
加入数据:public boolean add(Object obj)
删除数据:public boolean remove(Object obj)
public boolean remove(int index)
为Iterator实例化:public Iterator iterator()
取出元素的个数:public int size()
#LinkedList 提供了一个链接列表数据结构
Collection 的 子接口Set:( HashSet / TreeSet)
异同
1,Set的基本使用与List一致,但是HashSet子类存放时是无序的(散列存放)。
Set<java.lang.String> set=new HashSet<java.lang.String>();
2,List中的数据允许重复元素,重复元素保留下来。
Set中的数据不允许有重复元素,重复元素被替换掉。
#HashSet 无序存放(散列存放)
#TreeSet 有序存放 (升序存放)
靠Comparable接口排序(如,输入为GBEACFD,输出为ABCDEFG)
Iterator :从前到后顺序输出(不能从后向前)
ListIterator:允许双向遍历列表,并可修改单元
Map接口中 ( HashMap / TreeMap )
#HashMap 映射类 key——>value 异步处理方式
Map的主要功能是作为查找使用,不是输出使用。
存入数据方法:put(Object key,Object value)
取出数据方法:Object get(Object key) // 根据key取value
Map<java.lang.String,java.lang.String> map=new HashMap<java.lang.String,java.lang.String>();
map.put("键","数据值");
System.out.println(map.get("键"));
Map接口的对象不能直接使用Iterator输出。
如果一定要使用Iterator输出Map接口对象的内容,必须使用以下步骤:
Map -> Set -> Iterator -> Map.Entry -> key、values
Set set=map.entrySet();
Iterator iter=set.iterator();
while(iter.hasNext()){
Map.Entry me=(Map.Entry)iter.next();
System.out.println(me.getKey()+"——>"+me.getValue());
}
#TreeMap 按key排序
以上均为JAVA 2 所带新特性!!
以下介绍JAVA 1:
#Enumeration:枚举,与Iterator的功能一直,都是用于输出集合中的内容
Enumeration Iterator
判断是否有下一个内容 hasMoreElements() hasNext()
取值 nextElement() next()
List和Set都不能使用Enumeration输出
而List的另外一个子类:Vector 可以使用Enumeration 输出
#Vector 实现动态数组,同步处理
Vector vector=new Vector(); //如果换为List vector=new Vector();则Enumeration无法使用
vector.add("elements");
vector.add("elements");
vector.add("elements");
Enumeration e=vector.elements();
while(e.hasMoreElements()){
System.out.println(e.nextElement())
}
栈是一个先进后出(后进先出)的操作
#Stack (Vector的子类)
Stack stack=new Stack();
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
while(!stack.empty()){
System.out.println(stack.pop());
}
//浏览器的页面的前进后退就是利用堆栈实现
//若栈中所有内容弹出
#HashTable 与HashMap相似,但HashTable是同步处理方式的
不支持迭代函数
#Properties HashTable的子类
属性类 ,用来保持值的列表
异同:Properties类主要是保存字符串的,而Hashtable是保存对象的
setProperty(String key,String value)
getProperty(String key)