Day18 Java Foundation

Directeur d'usine Java 2021-10-14 04:49:25
day18 day java foundation


Day18-Java

1、MapEnsemble

Un objet pair est une paire d'objets,C'est - à - dire::Les deux objets sont sauvegardés en même temps,Ces deux objets sont conformes à“key=value”Défini sous la forme,C'est - à - dire::Peut passerkeyTrouver la correspondancevalueDonnées,C'est comme un annuaire téléphonique,Par exemple,Les informations suivantes sont conservées dans l'Annuaire téléphonique:

Key =Zhang San,value=123456;

Key=Li - si.,value=234567;

Si vous voulez trouver le téléphone de Chang San,D'après Zhang Sankey,Obtenir la correspondancevalue,Et si vous voulez trouver le téléphone de Wang Wu maintenant,Comme il n'y a pas de Wang Wukey, Donc le résultat est null.

MapC'est la structure des données qui permet une telle opération,Les principales méthodes de fonctionnement définies dans cette interface sont les suivantes.

Nom de la méthode Type Description
public V put(K key, V value) Fréquent Enregistrer les données dans la collection
public V get(Object key) Fréquent ParkeyObtenir la correspondancevalue
Public Set keyset() Fréquent Oui.MapTous danskeyParSet Retour de la collection
Public Set<Map,Entry<K,V>>entrySet() Fréquent Oui.Map La collection devient SetEnsemble

InMapIl y a deux sous - classes communes dans l'interface:HashMap,Hashtable.

1.1 Sous - catégories:HashMap

HashMap- Oui.MapLa Sous - classe la plus utilisée dans l'interface

public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable

HashMapPrésentationMapLe rôle des principales méthodes dans l'interface

ValidationMap

package com.day18.demo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapDemo {

public static void main(String[] args) {

Map<Integer,String> map = new HashMap<>();
map.put(1, "Hello,world!!");
map.put(2, "zsr");
map.put(3, ".com");
Set<Integer> keyset = map.keySet();// Obtenir tout keyInformation
Iterator<Integer> iterator = keyset.iterator();
while(iterator.hasNext()){

Integer key = iterator.next();
System.out.println(key + "=" + map.get(key));
}
}
}

Questions d'entrevue:ExplicationHashMapLe principe

​ Lorsque la quantité de données est faible HashMapEst stocké en mode liste liée. Quand les données deviennent plus volumineuses, , Pour une recherche rapide ,Changez cette liste en arbre Rouge et noir( Arbre binaire équilibré ),Avechash Code comme emplacement des données , Pour enregistrer .

​ Toutes les méthodes sont asynchrones,Appartenant à une opération thread Unsafe.

1.2 Sous - catégories:Hashtable

jdk1.0 Fournir trois grandes catégories :Vector、Enumeration、Hashtable.

HashtableEst la première mise en œuvre de cette structure de données d'objets binaires pair,Parce que le design tardif le rend aussi compatible avecVector Autant que ça. MMapInterface.

package com.day18.demo;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashtableDemo {

public static void main(String[] args) {

Map<Integer,String> map = new Hashtable<>();
map.put(1, "Hello,world!!");
map.put(2, "zsr");
map.put(3, ".com");
map.put(null, null);
System.out.println(map);
}
}
Exception in thread "main" java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:460)
at com.day18.demo.HashtableDemo.main(HashtableDemo.java:15)

Ci - dessusHashtableImpossible de passer une valeur nulle et de la sortir.EtHashMapC'est bon.

package com.day18.demo;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashtableDemo {

public static void main(String[] args) {

Map<Integer,String> map = new HashMap<>();
map.put(1, "Hello,world!!");
map.put(2, "zsr");
map.put(3, ".com");
map.put(null, null);
System.out.println(map);
}
}
{
null=null, 1=Hello,world!!, 2=zsr, 3=.com}
La différence HashMap Hashtable
Temps JDK1.2 JDK1.0
Performance Traitement asynchrone ,Haute performance Les performances de synchronisation sont relativement faibles
Sécurité Sécurité des fils Thread Unsafe
Paramètresnull Allowkey、valueSet tonull Non autorisékey、valueSet tonull, Sinon, une exception se produit

image-20210903151117112

1.3 ConcurrentHashMapSous - catégories

ConcurrentHashMap Caractéristiques = HashtableSécurité du fil pour + HashMapHaute performance,En serviceConcurrentHashMapLa synchronisation des données de mise à jour de plusieurs Threads peut être assurée lors du traitement,Il peut également garantir une vitesse de requête très efficace.

public class ConcurrentHashMap<K,V>
extends AbstractMap<K,V>
implements ConcurrentMap<K,V>, Serializable

Si l'on utilise maintenant certains algorithmes,Diviser également les grandes quantités de données stockées en différents seaux(Zone de données),De cette façon, il est possible d'éviter ce balayage complet des données lors de la recherche de données.

Seau de données

package com.day18.demo;
import java.util.Random;
public class ConcurrentHashMapDemo {

public static void main(String[] args) {

for(int i = 0; i <10 ; i++){

new Thread(()->{

Random random = new Random();
int temp = random.nextInt(9999);
int result = temp % 3;
switch(result){

case 0:
System.out.println("No0Seau" + temp);
break;
case 1:
System.out.println("No1Seau" + temp);
break;
case 2:
System.out.println("No2Seau" + temp);
break;
}
}).start();
}
}
}

Chaque donnée doit porter une marque de séparation claire après l'adoption de la séparation des barils, Utilisation évidente hashCode().

image-20210904093623026

image-20210904093616074

image-20210904094132836

image-20210904094740183

1.4 MapUtiliserIteratorProduits

Dans le développement réel,Si vous stockez des données pour la sortie, Alors la priorité doit être Collection,UtiliserMapL'opération principale est de concevoir notre contenu,Puis il a été adopté.get()Recherche.UtiliserMap Les exigences relatives aux extrants itératifs seront les suivantes: ,Mais pas beaucoup.

Regardez à travers un graphique simpleCollectionAvecMap Différences dans l'enregistrement des données

image-20210904095939989

image-20210904100617165

AdoptionIteratorProduitsMapContenu

package com.day18.demo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapIteratorDemo {

public static void main(String[] args) {

Map<Integer,String> map = new HashMap<>();
map.put(1, "hELLO,");
map.put(2, "WORLD!!!");
//1.Oui.mapDevientSetEnsemble
Set<Map.Entry<Integer,String>> set = map.entrySet();
//2.InstanciationIteratorInterface
Iterator<Entry<Integer, String>> iter = set.iterator();
//3. Chaque sortie itérative Map.EntryObjet
while(iter.hasNext()){

//4.Enlevez - le.Map.Entry
Map.Entry<Integer, String> me = iter.next();
//5.AccèskeyEtvalue
System.out.println(me.getKey() + "=" + me.getValue());
}
}
}

1.5 MapDanskeyDescription de la mise en oeuvre

PersonnalisationKeyType

package com.day18.demo;
import java.util.HashMap;
import java.util.Map;
class Person2{

private String name;
public Person2(String name) {

super();
this.name = name;
}
public String getName() {

return name;
}
public void setName(String name) {

this.name = name;
}
@Override
public int hashCode() {

final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {

if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person2 other = (Person2) obj;
if (name == null) {

if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class PersonDemo {

public static void main(String[] args) {

Map<Person2,String> map = new HashMap<Person2,String>();
map.put(new Person2("Zhang San"), new String("zs"));
System.out.println(map.get(new Person2("Zhang San")));
}
}

Parce que le développement réel ,PourmapEnsemblekeyType,Non, pas du tout.StringC'estInteger,Ces classes de systèmes ont aidé l'utilisateur à passer outreequals()、hashCode()Voilà..

1.6 TreeMapSous - catégories

Trier MapSous - catégories, Il suit key Pour trier .

TreeMapFonctionnement

package com.day18.demo;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
class Person2{

private String name;
public Person2(String name) {

super();
this.name = name;
}
public String getName() {

return name;
}
public void setName(String name) {

this.name = name;
}
@Override
public int hashCode() {

final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {

if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person2 other = (Person2) obj;
if (name == null) {

if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class PersonDemo {

public static void main(String[] args) {

Map<Person2,String> map = new TreeMap<Person2,String>();
map.put(new Person2("Zhang San"), new String("zs"));
System.out.println(map.get(new Person2("Zhang San")));
}
}
Exception in thread "main" java.lang.ClassCastException: com.day18.demo.Person2 cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1294)
at java.util.TreeMap.put(TreeMap.java:538)
at com.day18.demo.PersonDemo.main(PersonDemo.java:51)

Le problème ci - dessus se pose parce qu'il n'y a pas de mise en oeuvreComparableInterface.

package com.day18.demo;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
class Person2 implements Comparable<Person2>{

private String name;
public Person2(String name) {

super();
this.name = name;
}
public String getName() {

return name;
}
public void setName(String name) {

this.name = name;
}
@Override
public int hashCode() {

final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public int compareTo(Person2 o) {

// TODO Auto-generated method stub
return this.name.compareTo(o.name);
}
@Override
public boolean equals(Object obj) {

if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person2 other = (Person2) obj;
if (name == null) {

if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class PersonDemo {

public static void main(String[] args) {

Map<Person2,String> map = new TreeMap<Person2,String>();
map.put(new Person2("Zhang San"), new String("zs"));
System.out.println(map.get(new Person2("Zhang San")));
}
}

CollectionLes données sont conservées pour la sortie、MapLe but de la conservation des données est dekeyTrouver,

MapUtiliserIteratorProduits(Map.EntryLe rôle de)

Principes de conception de certaines classes ,C'est pour ton entretien d'embauche,Et nous développons en utilisantHashMapSous - catégories

版权声明
本文为[Directeur d'usine Java]所创,转载请带上原文链接,感谢
https://javamana.com/2021/10/20211013211944128h.html

  1. What are the new features of Java 10?
  2. What are the new features of Java 9?
  3. Is the report too ugly? Try this open source project reportplus!
  4. Spring 2021 report released: who is the real brother?
  5. À bientôt, docker.
  6. Recommend a super easy to use markdown editor
  7. Java 17 new features overview
  8. New developer friendly features after Java 8
  9. Concise and efficient eclipse collections API
  10. Practice of deploying spring boot microservices on kubernetes
  11. Garbage collectors in the new JDK: Shenandoah, ZGC and improved G1
  12. À bientôt, docker.
  13. Oracle exécute le format syntaxique d'une procédure stockée ou d'un lot
  14. [Azure Cloud Service] Azure Cloud Service ajoute des champs personnalisés pour le rôle Web (hôte IIS) (ajoute le champ user agent dans l'en - tête de demande http au Journal de sortie IIS)
  15. The Linux kernel will be implemented with the latest zstd
  16. JetBrains publishes the raw data of the developer ecosystem survey in 2021
  17. Linux 5.16 will support KVM and disable amd PSF function
  18. Linux 5.16 brings DisplayPort 2.0 initial support for amdgpu driver
  19. Announcement of the election results of the technical advisory committee of the Linux foundation in 2021
  20. Java虚拟机|JVM【适合初学者入门】
  21. Spring Cloud 2021.0.0-M2 发布
  22. [Azure Cloud Service] Azure Cloud Service ajoute des champs personnalisés pour le rôle Web (hôte IIS) (ajoute le champ user agent dans l'en - tête de demande http au Journal de sortie IIS)
  23. Spring Cloud 2021.0.0-M2 發布
  24. Java虛擬機|JVM【適合初學者入門】
  25. Spring Cloud 2021.0.0-m2 Release
  26. Machine virtuelle Java | JVM [convient aux débutants]
  27. 10412 Xiaopeng cars announced sales results in September
  28. Apprendre le mécanisme des événements Java
  29. Java script RPC (07) - timeout timeout Processing from zero
  30. Introduction à la page Web de rabbitmq (3)
  31. MySQL read - Write Separation Cluster Construction and Integration with mycat
  32. Analyse du principe du conteneur du CIO printanier
  33. Java面向对象基础
  34. Java communique avec les capteurs industriels via socket et DTu, RTU
  35. Xiaopeng automobile delivered 10412 units in September, with a monthly sales volume of more than 10000 for the first time
  36. Java Object Oriented Foundation
  37. Introduction au développement Android PDF, un tour pour vous apprendre à comprendre netty
  38. Hadoop Foundation - 01 - concepts de base
  39. Hadoop Foundation - 02 - Basic Structure
  40. Hadoop Foundation - 03 - hdfs (Hadoop Distributed File System) Basic Concepts
  41. Hadoop Foundation - 04 - hdfs API Programming
  42. Hadoop Foundation - 05 - hdfs Project (word Frequency Statistics)
  43. Hadoop Foundation - 06 - hdfs Data Read and write
  44. The "monthly test" report card of the new car built under the lack of core: Xiaopeng and Weilai took the lead in "breaking 10000", and the ideal plummeted by 25%
  45. Introduction to making arch linux software package
  46. Hard core observation 407 HTTPS everywhere browser extension is about to retire
  47. How to use busybox on Linux
  48. In 2021, the talent incentive plan of Linux foundation open source software School Park was officially launched
  49. It's not windows or Linux. Shrink is the "God operating system"
  50. Install anydesk on Ubuntu Linux
  51. 2021, can we recommend using Linux to play games?
  52. not exist:org.springframework.kafka.listener.AbstractMessageListenerContaingetContainerProperties()
  53. Are you sure HTTPS is asymmetric encryption for content encryption? See the answers and reasons
  54. MySQL online slow log query
  55. Java JDK server installation
  56. 手把手教你使用Java开发在线生成pdf文档
  57. Questions d'entrevue dans la base de données MySQL (dernière version 2021)
  58. Java零基础小白入门必做题汇总(建议收藏)第一篇
  59. Day15 Java Foundation
  60. Day16 Java Foundation