Java容器类



Java容器类

Java容器类 - wenchangqing_live - 夏小盆友

从上图可以看出容器类的结构。
Collection 接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。

  1. Set中的数据对象没有顺序且不可重复
  2. List中的数据对象有顺序且可以重复
  3. Map接口定义了 存储键“key”— 值“value”映射对 的方法。(key不可重复

这里的重复指其中的存储的值不可以有相同的。系统会自动调用(值所在)类的equal方法判断。 如需要去掉重复的几何元素,可以重写该方法。(重写了equal方法必须重写hashcode方法,目前不太明白为啥)
在Map存储键值对的时候, 键key有可能是一个对象,那么查找起来可能比较麻烦。 注意:相同的对象,哈希码一定相同。 可以使用哈希码”直接找到key的索引对象。 可以调用Object 的 hashCode() 方法得到哈希码。 如需要可以重写该方法。
LinkedList(实现) 是以“链表”的形式做的底层存储空间,因此它适合于在链表中间需要频繁进行插入和删除操作。 (一个内存空间存储值并且指向另一个空间,依次类推形成一个“链表”)。
ArrayList(实现) 是以“数组”的形式做的底层存储空间。因此它的随机访问速度极快
由于以上底层存储空间的不同,所以遍历   集合  也需要不同的实现方法。 使用迭代器Iterator(接口),不同的类(LinkedList、ArrayList)会有不同的实现。
对于有序的集合(实现List接口的类),可以使用get(下标);进行遍历。 对于无序的集合,需要使用迭代器Iterator。 如下: //方法一:         List list = new LinkedList();         list.add(“123″);         list.add(“349999″);
Iterator i =list.iterator();         while (i.hasNext()) {             String d = i.next().toString();             System.out.println(d);         } //方法二:         for (Iterator it = list.iterator();it.hasNext();) {                 it.next();                 it.remove();                 System.out.println(it.next());         } //方法三:         for (Object obj : list) {             ……         } 是用foreach不可以修改 “obj” 的值。
Collections类 提供了一些关于List的常用算法

Java容器类 - wenchangqing_live - 夏小盆友

如果要调用Collecctions的sort()方法,则必须将list对象中的类实现Comparable接口。 当你调用Collections.sort();方法时,系统会去自动调用自己的Comparable的接口。
Map、HashMap的遍历:
Map的遍历:          Map <String, String> hash=new HashMap <String, String> ();          hash.put( “001 “, “北京 “);          hash.put( “002 “, “上海 “);          hash.put( “003 “, “天津 “);                  for(Map.Entry <String, String> entry : hash.entrySet()) {         System.out.println(entry.getKey() + ” –> ” + entry.getValue());         }
HashMap遍历:         HashMap hash = new HashMap();         hash.put(“001 “, “北京 “);// “001”为键,“北京”为值。         hash.put(“002 “, “上海 “);         hash.put(“003 “, “天津 “);         Iterator it = hash.keySet().iterator();// 这是取得键对象         while (it.hasNext()) {             Object o = it.next();             System.out.println(“it.Next数据的值是: ” + o.toString() + hash.get(o)); // 获得键所对应的值。         }