黑马程序员技术交流社区

标题: 【总结】java基础笔记 之 容器 [打印本页]

作者: Kelvinhu    时间: 2014-4-11 00:56
标题: 【总结】java基础笔记 之 容器
本帖最后由 Kelvinhu 于 2014-4-11 01:03 编辑

javase基础的视频看完啦,好好总结一下~记录下,以后可以供自己翻一下~如有不妥的地方欢迎大家质疑~

首发自我的小博客嘿嘿~  http://blog.csdn.net/u014517350/article/details/23391957

概念

容器:Java API所提供的一系列的实例,用于在程序中存放对象。

容器 提供的Api包在java.util包内。




                java中提供的容器结构图



其中Set中的数据对象没有顺序并且不可以重复;List中的数据对象有顺序并且可以重复。(如果这两个对象互相equls,就算是重复。);Map定义了存储键值对方法。


  1. import java.util.*;
  2. public class Test{  
  3.         public static void main(String args[]) {
  4.                 Collection room = new ArrayList();
  5.                 //父类引用指向子类对象,可以装不同类型的,如下所示。
  6.                 room.add("apple");
  7.                 room.add(new Integer(88));
  8.                 System.out.println(room.size()+"--"+room);
  9.         }
复制代码


通过上面代码可知道容器可以装不同类型的对象,但是这样效率不高,我们可以放相同类型的对象,可以用方便好用的泛型。

重写eqults方法应该重写hashCode方法,在这个类的某个对象当作索引的时候会使用hashCode方法。

LinkedList底层的数据结构是链表形式的,是散列形式的; ArrayList的底层的数据结构是数组形式的,是连续的。

遍历用到了Iterator

  1. import java.util.*;
  2. public class Test{  
  3.         public static void main(String args[]) {
  4.                 Collection room = new ArrayList();
  5.                 //父类引用指向子类对象
  6.                 room.add(new Name("apple"));
  7.                 room.add(new Name("banana"));
  8.                 System.out.println(room.size()+"--"+room);

  9.                 for(Iterator it = room.iterator();it.hasNext();) {
  10.                         Name n = (Name)it.next();
  11.                         System.out.println(n);
  12.                 }
  13.         }

  14. }
  15. class Name        {
  16.         private String name;
  17.         Name(String name){
  18.                 this.name = name;
  19.         }
  20. }
复制代码


遍历还可以用增强的for循环~方便的遍历数组或者Collection

但是有缺陷:1、遍历数组时候不能方便访问下标值。2、与使用Iterator相比,不能删除集合中的内容

除了简单遍历并读出内容,不建议使用增强for循环来遍历。


类之间互相比较大小,进行排序,可以实现Comparable接口,重写compar to方法即可。


  1. import java.util.*;
  2. public class Test{  
  3.         public static void main(String args[]) {
  4.                 Collection room = new ArrayList();
  5.                 //父类引用指向子类对象
  6.                 room.add(new Name("apple",15));
  7.                 room.add(new Name("banana",10));
  8.                 room.add(new Name("banana",12));
  9.                 System.out.println(room.size()+"--"+room);

  10.                 for(Iterator it = room.iterator();it.hasNext();) {
  11.                         Name n = (Name)it.next();
  12.                         System.out.println(n.name+"--"+n.price);
  13.                 }
  14.         }

  15. }
  16. class Name implements Comparable{
  17.         String name;
  18.         int price;
  19.         Name(String name,int price) {
  20.                 this.name = name;
  21.                 this.price = price;
  22.         }
  23.         public int compareTo(Object o) {
  24.                 Name n = (Name)o;
  25.                 if(this.price > n.price) return 1;
  26.                 else if(this.price < n.price) return -1;
  27.                 else return 0;
  28.         }
  29. }
复制代码







作者: linweiwen    时间: 2014-4-11 00:57
楼主看的是马士兵的视频?
黑马给的是毕向东的视频喔?
虽然知识都一样。。


作者: Kelvinhu    时间: 2014-4-11 00:59
linweiwen 发表于 2014-4-11 00:57
楼主看的是马士兵的视频?
黑马给的是毕向东的视频喔?

:lol对啊 前面部分看的是马士兵老师讲的~~

后面学习之余才知道黑马的~~:lol其实都一样啦~
作者: linweiwen    时间: 2014-4-11 01:04
Kelvinhu 发表于 2014-4-11 00:59
对啊 前面部分看的是马士兵老师讲的~~

后面学习之余才知道黑马的~~其实都一样啦~ ...

还在看教程呢,
其实我更习惯看马士兵的视频,
接触java就是看马士兵入门的,
但怕错过一些黑马的知识点,
现在在重新看毕向东教程温习。
作者: Kelvinhu    时间: 2014-4-11 01:09
linweiwen 发表于 2014-4-11 01:04
还在看教程呢,
其实我更习惯看马士兵的视频,
接触java就是看马士兵入门的,

:lol我两位老师的视频都看完了~

毕向东老师讲的更基础一点,马士兵老师的比较严谨,感觉差不多了,都是很不错的基础视频




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2