??????Java????????校?HashSet??HashMap???????????????????ArrayList??LinkedList????????????????????????????????????????Vector??HashTable??????????????????????????????JDK???????????????????????????????????JDK?????????????Collections?????????????????????
?????????????
????1.??????HashMap??
??????Thinking In Java???????????????????????????????key-value??demo?????????????????????????????????????????????????????娲�???????????????械????????????????????????????椋�????????????????????械???????????????????????????????Java??????equals????==??????????????????????
????2.HashMap????????????
????Hash?????????????????????????????????????????????????????????????????????????????????????
????3.Java?械?Hash??
?????????Java???????????????????????????????(????C??????????????????椋�??些??????2??????????????????????椤�??????????????????????????魏??????????Java?校?ArrayList??????????Objec???????????????HashMap????????????????????????????????????????????????Entry?????????????key??value??hash(????hashCode)??next(????????????????)?????HashSet???HashMap????????????????????Entry??value???????key?????????HashSet?????????
????public HashSet() {
????map = new HashMap<E??Object>();
????}
??????????????????????????????HashSet?????????????????HashMap?????
????HashMap???
?????????????????hash????????????????????3???????????????????length?????椋�??????小??length??????????????锌?????????????????????????????16???????写???????(?????????HashMap???????)??????????????????????hashCode()?????????????????hashCode????????HashMap????????????????????????械?位??????????? i??
????int hash = hash(key.hashCode());
????int i = indexFor(hash?? table.length);
???????????????hashCode???????2???????????????i?????i?????????械?位???????????????????indexFor(hash??table.length)?????????
????static int indexFor(int h?? int length) {
????return h & (length-1);
????}
????????????????????h??(length-1)??位????????????????????length??????????????table???????????????????????????????????????????????小??????小????????????????????慰????????????????些????????????????????table?械?位???????????????????????????hashCode()?????????????????????????????????hashCode???????????????????????????????????????????????????????????????????????位????????????????????娲�?????hashCode?????????????????HashMap??size??????????1????????2????????????????????????小?HashMap?械?size???????????????????????????size()??????????map??????
????public int size() {
????return size;
????}
????????????????????????hash???????????????????????HashMap????????锌????????hashmap????????????table????capacity????????????????????threshold??????????????????????????????????
????public HashMap() {
????this.loadFactor = DEFAULT_LOAD_FACTOR;
????threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
????table = new Entry[DEFAULT_INITIAL_CAPACITY];
????init();
????}