JAVA基础 key在这里干什么?搞不懂

Python013

JAVA基础 key在这里干什么?搞不懂,第1张

key在这里是你要查找的内容(文字列)。

举个例子

String str = "abcdef"

String key = "cde"

int index = 1

这时

str.indexOf(key, index)

就返回2。因为我们从"abcdef"的index=1(b的位置)开始找,找到了"cde","cde"在str中的index=2。

此时,我们要继续找到话就要从 str 的 index = 2 + 3 的地方开始找。

2代表的是 "cde"在str中的index

3代表的是"cde"的长度,也就是key.length()。

您好,这样:

第一步,从key和crt生成pkcs12格式的keystore

openssl pkcs12 -export -in mycert.crt -inkey mykey.key

-out mycert.p12 -name tomcat -CAfile myCA.crt

-caname root -chain

第二步 生成tomcat需要的keystore

keytool -importkeystore -v -srckeystore mycert.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore tomcat.keystore -deststoretype jks -deststorepass 123456 。

 对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode。在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。

为什么这么说呢?考虑一种情况,当向集合中插入对象时,如何判别在集合中是否已经存在该对象了?(注意:集合中不允许重复的元素存在)

也许大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。此时hashCode方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的hashCode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用equals方法的次数就大大降低了,说通俗一点:Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。下面这段代码是java.util.HashMap的中put方法的具体实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public V put(K key, V value) {

if (key == null)

return putForNullKey(value)

int hash = hash(key.hashCode())

int i = indexFor(hash, table.length)

for (Entry<K,V>e = table[i]e != nulle = e.next) {

Object k

if (e.hash == hash &&((k = e.key) == key || key.equals(k))) {

V oldValue = e.value