疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

集合 常用实现类的区别


 

   

  1.集合是什么

  集合就是面向对象可重用性的体现,一般地,我们把研究对象统称为元素;把一些元素组成的总体叫做集合,也简称集。

  2.集合元素的特征

  (1)确定性:设A是一个给定的集合,x是某一个具体对象,则或者是A的元素,或者不是A的元素,两种情况必有一种且只有一种成立. (2)互异性:一个给定集合中的元素,指属于这个集合的互不相同的个体(对象),因此,同一集合中不应重复出现同一元素. (3)无序性:一般不考虑元素之间的顺序,但在表示数列之类的特殊集合时,通常按照习惯的由小到大的数轴顺序书写

  collection 集合 实现类

  ArrayList 实现方法:数组实现 版本:1.2 时间:98年12月发布 轻量级(运行快) 线程不安全 (常用)

  Vector 实现方法:数组实现 版本:1.0 时间:95年5月发布 重量级(运行慢) 线程安全

  LinkedList 实现方法: 链表实现

  数组:空间连续 查询速度快 直接访问下标 增加删除慢 增删需要将后面的数据向后移或向前移

  链表:节点关联 查询速度慢 通过上一个去查找下一个 增加删除快 链表增加直接将上一个指向新数据下一个也指向新数据

  Vector实现类Stack 栈LIFO(Last In First Out)查询少增删多

  3.如何用java实现一个栈

  a.数组 b.LinkedList c.Stack类

  用LinkedList,为什么不用Stack实现类呢 因为Stack继承错误的继承了Vector Vector提供了add方法,但是栈只能pop和push无法从中间插入,让栈不够安全。Stack继承了Vector让Statck存在很多不应该存在的方法。

  复制代码

  1 //用java创建一个栈

  2 public class AStack {

  3 public static void main(String[] args) {

  4 Stacks s = new Stacks();

  5 s.push("lin");

  6 s.push("hello");

  7 s.push("hou");

  8 s.push(123);

  9 System.out.println(s.pop());

  10 System.out.println(s.pop());

  11 System.out.println(s.pop());

  12 System.out.println(s.pop());

  13 }

  14 }

  15 class Stacks{

  16 //变继承复用为主核复用

  17 private LinkedList list = new LinkedList();

  18 public void push(Object o){

  19 list.addFirst(o);

  20 }

  21 public Object pop(){

  22 Object o = list.removeFirst();

  23 return o;

  24 }

  25 }

  复制代码

  Map集合

  元素:key - value 对(键值对)

  特点:key 内容唯一不可重复 key所对应的value是可重复的 无序

  用法:通过key找value

  例子:字典 单词——解释 网站 用户名——密码

  主要方法:

  1.put(Object k,Object v):把k-v这个键值对放入Map 若k已存在那么新v会替代旧v

  2.get(Object k):返回Map中k对应的v

  3.remove(Objeck k):删除k所在的键值对

  4.containsKey(Object k):判断Map中是否有K存在

  5.containsValue(Object v):判断Map中是否有v存在

  Map3种的遍历

  1.值遍历

  1   Collection c = map.values();

  2 Iterator i = c.iterator();

  3 while(i.hasNext()){

  4 System.out.println(i.next());

  5 }

  2.键遍历

  复制代码

  1 Set s = map.keySet();

  2 Iterator i = s.iterator();

  3 while(i.hasNext()){

  4 Object k = i.next();

  5 Object v = map.get(k);

  6 System.out.println(k+"+++"+v);

  7 }

  复制代码

  3.键值遍历

  Map.Entry对象,封装了一个key和一个value

  复制代码

  1      Set set = map.entrySet();

  2 Iterator i = set.iterator();

  3 while(i.hasNext()){

  4 Map.Entry me = (Map.Entry)i.next();

  5 System.out.println(me.getKey());

  6 System.out.println(me.getValue());

  7 }

  复制代码

  实现类:

  1.HashMap :1.2 允许用null作为key或者value

  2.Hashtable :1.0 不允许null作为key或者value

  3.Properties:Hashtable的子类 key和value都是String 一般用于配置文件的读取

  4.TreeMap:实现了SortcdMap(Map的子接口)自动对key排序