sisyphus的博客
热爱生活
posts - 1,comments - 1,trackbacks - 0

类集就是一个动态的对象数组,可以存储数量不等的多个对象

对象数组:可以保存多个对象在一个数组中

问题:数组的长度是不可改变的,而类集的大小不确定可以任意的扩充或减少

三个核心接口
1、 Collection---List(ArrayList,LinkedList)
        ---Set
List
操作:add()
List all=new ArrayList();
all.add("MLDN");
all.add("LXH");
默认情况下加入数据的顺序就是输出的顺序
可以使用特定的方法向指定的位置增加
使用类集时,加入的对象最好一种对象

从对象数组中删除数据用remove()
一个个打印元素的方法:
     1、用for循环(size()获取类集的大小、get(int indenx)返回指定位置的元素)
  2、Iterator (开发中集合都是用该接口输出)
     因为集合的长度不固定,所以Iterator采用的方法是一个个判断输出,
  如果有下一个元素就执行,如果没有下一个元素就不执行
  判断是否有下一个元素:public boolean hasNext();
  取内容:public Object next()
  Iterator iter=集合对象.iterator();
  while(iter.hasNext()){
   object obj = iter.next();
   System.out.println(obj);
  }

如何让一个集合只加入一种对象
List<java.lang.String>all = new ArrayList<java.lang.String>();
便于转型

(Collection)集合操作的方法总结:
向集合中加入数据;
从集合中删除数据;
为Iterator实例化;
取出元素的个数。
Set
区别: HashSet 子类加入的对象是无序的;(散列存放)
    List 中可以存放重复元素, Set 中不允许存在重复元素
如果希望Set中的数据按顺序(数据的大小不是放入数据的顺序)存放则应该使用TreeSet子类
靠的是Comparable()接口

2、 Map
Map的主要功能是作为查找使用而不是作为输出使用
存取数据的方法:put(Object key,Object value)
取内容:Object get(Object key)
Map<java.lang.String,java.lang.String> m = new HashMap<java.lang.String,java.lang.String>() ;
m.put("张三","123456") ;
m.put("李四","654321") ;
System.out.println(m.get("赵六")) ;//null

Map 接口的对象不能直接使用Iterator输出
 //下面的这个方法了解即可
 如果非要使用Iterator输出Map接口对象的内容,则必须使用以下步骤
Map ——>Set ——> Iterator ——> Map.Entry ——> key、values

Set all = m.entrySet() ;
Iterator iter = all.iterator() ;
while(iter.hasNext()){
 Map.Entry me = (Map.Entry)iter.next() ;
 System.out.println(me.getKey()+" --> "+me.getValue()) ;
}

3、 Iterator

4、 Enumeration :枚举,与Iterator的功能一致,都是用于输出集合中的内容

List 和 Set 都不能使用 Enumeration 输出
而 List 的另一个子类: Vector 可以使用Enumeration输出

Vector 是一个同步操作 性能不是很好 因此后来让 Vector 也实现了 Iterator 接口
使用实例:
Vector v = new Vector() ;
v.add("A") ;
v.add("A") ;
v.add("A") ;
Enumeration e = v.elements() ;
while(e.hasMoreElements()){
 System.out.println(e.nextElement()) ;
}

5、 Stack  (Vector 的子类)(先进后出)
Stack s = new Stack() ;
s.push("A") ;
s.push("B") ;
s.push("C") ;
s.push("D") ;
s.push("E") ;
// 取值
while(!s.empty()){
 System.out.println(s.pop()) ;
}

浏览器的前进和后退就是用栈实现的

6、 Hashtable 与 HashMap 相似,但 Hashtable 是同步的

7、 Properties 类是 Hashtable 的子类
 不同之处: Properties 类主要是保存字符串的,而 Hashtable 是保存对象的。
 setProperties(String key,String value)
 getProperties(String key)

8、 ArrayList 与 Vector

 异步       |  同步
 只支持 Iterator 输出| 支持 Iterator 和 Enumeration 输出
    出现较晚   | 出现较早
9、 HashMap 与 Hashtable
 异步       |  同步
 不直接支持Iterator输出| 不直接支持Iterator输出
 出现较晚   | 出现较早

10、本章重点

HashMap 与 Hashtable
ArrayList 与 Vector
Iterator 与 Enumeration

保存单个值的集合:Collection:
 |---List:允许有重复元素
  |---ArrayList:异步处理,新的类,只能用 Iterator 输出
  |---Vector:同步处理,旧的类,能 Iterator 和 Enumeration 输出
 |---Set:不允许有重复元素
  |---HashSet:散列,无序
  |---TreeSet:有序,按 Comparable 排序
保存一对值的集合(Map):
 |---HashMap:异步处理新的类
 |---Hashtable:同步处理旧的类
 |---TreeMap:按KEY进行排列的集合
输出:
 |---Iterator:新的输出类,方法名称较短
 |---Enumeration:旧的输出类,方法名称较长

posted on 2011-08-06 16:47 sisyphus 阅读(215) 评论(1)  编辑  收藏

FeedBack:
# re: Java集合学习笔记
2011-08-20 14:50 | GavinMiao
对集合的认识更深刻了,谢谢分享!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: