List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类
Map结构的集合类和租:胡棚拆HashMap类,Hashtable类
Set结构的集合类:HashSet类,TreeSet类
Queue结构的集合:Queue接口
HashMap和Hashtable的区别:
HashMap和Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点
以下是他们的区别:
1.历史原因:
Hashtable是基于陈旧的Dictionary类的,HashMap是java
1.2引进的Map接口的一个现实。
2.同步性:
Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行的效率,所以如果你不需要线程安全的结合裤枣那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率,我们一般所编写的程序都是异步的,但如果是服务器端的代码除外。
3.值:
HashMap可以让你将空值作为一个表的条目的key或value
Hashtable是不能放入空值(null)的
首先先要获取你的debug keystore位置: 打开Eclipse--->Windows--->Preferences--->Android--->Build 查看默认的debug keystore位置,我的是C:\Documents and Settings\MYNAME \.android\debug.keystore 2. 在cmd中执行: keytool -list -keystore ~/.android/debug.keystore 或者是: keytool -list -alias androiddebugkey -keystore "路径\debug.keystore " -storepass android -keypass android 双引号中的为你keystore位置, 注意,你的双引号一定要有,否则就会报错:keytool error: java.lang.RuntimeException: Usage error, and is not a legal command 执行结果局培含: androiddebugkey, May 4, 2009, PrivateKeyEntry, Certificate fingerprint (MD5): XX:XX:XX:XX:XX:XX:XX:XX............. 这里的XX:XX:XX:XX:XX:XX:XX:XX.............就是你的认证指纹 3. 打开 填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下: 感桐笑谢您注中唤册 Android 地图 API 密钥! 您的密钥是: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 4. 使用得到的apiKey: 在layout中加入MapView <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXHashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,滚拍首甚至 HashSet 本身就采用 HashMap 来实现的。1. 程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:大数
Java代码
HashMap<String , Double>map = new HashMap<String , Double>()
map.put("语文" , 80.0)
map.put("数学" , 89.0)
map.put("英语" , 78.2)
2.HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。
当程序执行 map.put("语文" , 80.0)时,系贺液统将调用"语文"的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法获得它的 hashCode 值。得到这个对象的 hashCode 值之后,系统会根据该 hashCode 值来决定该元素的存储位置。
3. HashMap 类的 put(K key , V value) 方法的源代码:
public V put(K key, V value)
{
// 如果 key 为 null,调用 putForNullKey 方法进行处理
if (key == null)
return putForNullKey(value)
// 根据 key 的 keyCode 计算 Hash 值
int hash = hash(key.hashCode())
// 搜索指定 hash 值在对应 table 中的索引
int i = indexFor(hash, table.length)
// 如果 i 索引处的 Entry 不为 null,通过循环不断遍历 e 元素的下一个元素
for (Entry<K,V>e = table[i]e != nulle = e.next)
{
Object k
// 找到指定 key 与需要放入的 key 相等(hash 值相同
// 通过 equals 比较放回 true)
if (e.hash == hash &&((k = e.key) == key
|| key.equals(k)))
{
V oldValue = e.value
e.value = value
e.recordAccess(this)
return oldValue
}
}
// 如果 i 索引处的 Entry 为 null,表明此处还没有 Entry
modCount++
// 将 key、value 添加到 i 索引处
addEntry(hash, key, value, i)
return null
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)