关闭

黑马程序员日记-4

标签: java笔记集合
115人阅读 评论(0) 收藏 举报
分类:

------- Android培训java培训 期待与您交流! ----------

JAVA  API(应用程序编程接口)

* StringStringBuffer:

String sb = new String(); StringBuffer sbf = new StringBuffer();

for(int i=0; i<100; i++) { for(int j=0; j<100; j++){

sb = sb + “*”; sbf.append(‘*’);

} }

以上两段代码StringBuffer的执行效率比String类高,使用String时,程序每次进入循环都会先将sb转化为StringBuffer,追加’*’后再将结果调用toString();方法转化成String对象;StringBuffer则始终使用同一个StringBuffer对象。

* 容器:

* Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

* Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。

* Vector类:用于保存预先不能确定对象数量的集合。

* ArrayList涉及到多线程时程序员要自己控制线程同步,Vector类是线程同步的 程序员不用处理线程同步问题。

 

Collection   
├List  元素之间有顺序,允许有重复元素  
│├LinkedList   内部是链表,是线程不安全  的
│├ArrayList  内部是数组,是线程不安全的,替代了VectorVector几乎不用
│└Vector   内部是数组,是线程安全的
│ └Stack   
└Set  

  ├HashSet 元素之间无顺序,不允许有重复元素,只能用迭代器取数据

  │ └LinkedHashSet 元素之间有顺序,不允许有重复元素,只能用迭代器取数据
  └TreeSet 使用元素的自然顺序(字典顺序)对元素进行排序,不允许有重复元素,必须

           在newTreeSet时指定比较器,元素应该覆盖comparable接口中的方法,如果对

           象不具备自然顺序,或者不按照自然顺序排序,可以使用TreeSet集合的第二

           种排序方式:让集合自身具备比较功能。  

           方法:向集合的构造函数中传一个比较器参数。

           比较器:定义一个类实现comparator接口,覆盖compare方法

           如果compare方法直接返回1则只向二叉树的一边存值,其表现是元素有序,

           即以1.32保存,仍以1.32的顺序取出

MapMap接口和Collection接口是并列关系)

├HashMap:内部是哈希表,不是线程安全的,允许空作为键和值

│ └Properties:用来存储键值对型的配置文件信息

├HashTable:内部是哈希表,是线程安全的,不允许空作为键和值

└TreeMap:内部是二叉树,可以对Map中的键进行排序

 

使用集合的场景:



如果使用HashSetHashMapHashTable必须重写equals();hashCode();方法,否则会出现重复元素,因为HashSet根据哈希码在内存中存放元素的键,元素的哈希码不一样,存放键的内存地址就不一样;HashSet再根据键来找到值,使用equals();方法判断是否已经存放该值。例如:A a1 = new A(1);A a2 = new A(1);的哈希码是不同的,在内存中存放的地址就不一样。

重写equals();hashCode();方法:

public boolean equals(Object obj)

{

Student s = (Student)obj;

return this.num==s.num && this.name.equals(s.name);

}

public int hashCode()

{

return new String(name + id).hashCode();

       //或者 return id * name.hashCode();

       //或者 return id + name.hashCode();

}

StringBuffer类中的hashCode();没有重写,不能作为重写hashCode();方法的关键字类

容器中存放的都是对象,如果直接存放基本类型值,会(自动装箱)自动转化 成相对应的类型。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2423次
    • 积分:217
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档