黑马程序员日记-4

原创 2015年11月18日 19:56:37

------- 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();方法的关键字类

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

黑马程序员学习日记(4)——文件批量重命名程序:One Click容错算法

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 1.很多时候,用户并不会像我们想...

黑马程序员学习日记(4)--继承、多态

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------- 继承: 用法。。父类派生子类...

黑马程序员Java学习日记(4)集合(一)

------- android培训、java培训、期待与您交流! ----------                    黑马程序员Java学习日记(4)集合(一) 1.前言: (1)为...

黑马程序员——学习日记4

String类的常用方法 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  按照面向对象的思想对字符串进行功能分类。   1.获取: ...
  • afiyo
  • afiyo
  • 2015年09月12日 17:12
  • 113

黑马程序员_日记4_Java继承,抽象类和接口

——- android培训、java培训、期待与您交流! ———-继承一、继承的概述继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力...

黑马程序员——黑苹果的日记(4)——基础知识(2)

一   printf函数的介绍     printf("%d,%d",a,b); 原格式:% - 0 m.n l或h 格式字符 %s:例如:printf("%s", "nihao")输出"...

黑马程序员_Java学习日记25_高新技术4

----------------------android培训、java培训、期待与您交流! --------------------- 泛型 1.入门泛型的基本应用 JDK1.5的...

黑马程序员——学习日记4——多线程技术

------- android培训、java培训、期待与您交流! ----------

黑马程序员_学习日记4_数据库

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 4月15日 初级的数据库运用不难,...

黑马程序员_Java学习日记5_面向对象总结4

----------------------android培训、java培训、期待与您交流! --------------------- 1。Java中的异常处理总结 异常体系: Throw...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员日记-4
举报原因:
原因补充:

(最多只允许输入30个字)