Heim  >  Artikel  >  Java  >  Eine kurze Einführung in Map&HashMapde

Eine kurze Einführung in Map&HashMapde

零下一度
零下一度Original
2017-07-23 17:44:021586Durchsuche

1. Einführung in Map&HashMap

1) Kartenoberfläche

1. Die Map-Schnittstelle bietet eine Zuordnungsbeziehung, in der Elemente in Form von Schlüssel-Wert-Paaren gespeichert werden, sodass Werte basierend auf dem Schlüssel schnell gefunden werden können. Der Schlüsselwert kann ein beliebiges Objekt sein und existiert als Objektinstanz vom Typ „Eintrag“.

2. Schlüssel kann nicht wiederholt werden, Wert kann jedoch wiederholt werden. Der Schlüsselwert kann null sein, aber nur ein Schlüssel kann null sein.

3.Map unterstützt Generics, Map

4. Jeder Schlüssel kann höchstens einem Wert zugeordnet werden

5.Map-Schnittstelle stellt entsprechende Methoden bereit zum Zurückgeben von Schlüsselwertsammlungen, Wertwertsammlungen und Eintragssammlungen (Schlüsselwertpaare)

By put,removeoperands

2 ) HashMap Implementierungsklasse

1. Die Entry-Objekte in HashMap sind eine wichtige Implementierungsklasse von Map und werden auch am häufigsten auf der Grundlage der Hash-Tabelle implementiert 🎜>2 . Sowohl der Schlüsselwert als auch der Wertwert können null sein, aber eine HashMap kann nur eine Karte mit einem Null-Schlüsselwert haben (der Schlüssel kann nicht wiederholt werden)

2. Kursauswahl für Studenten - Verwenden Sie Map, um Studenten hinzuzufügen

Case-Funktionsbeschreibung

1. Verwalten Sie Studenteninformationen über Map, wobei der Schlüssel die Studenten-ID und der Wert ist studentisches Objekt.

2. Geben Sie Schülerinformationen über die Tastatur ein

3. Fügen Sie Schülerinformationen in der Sammlung hinzu, löschen Sie sie und überprüfen Sie sie.

Erstellen Sie zunächst eine StuMap-Klasse, um die Verwendung von Map zu testen. Wie folgt:

 1 /** 2  * 学生类的Map集合类 3  * 
 4  * @author acer 5  * 6  */ 7 public class StuMap { 8     // 用来承装学生类型对象 9     private Map<String, Student> students;10     private static Scanner in;11     {12         in = new Scanner(System.in);13     }14 15     public StuMap() {16         students = new HashMap<String, Student>();17 18     }19    //省略方法,下面的方法会逐个列出20 }

>>>>>>>>>>>>> > ;>>>>>>>>>>>>>>>>>>>>>>>> > ;>> unterscheidet sich von der Listenschnittstelle. Beim Hinzufügen von Objekten zur Karte wird die Methode

put(key, value)

verwendet. Das Folgende ist ein Anwendungsbeispiel:

 1   /* 2      * 添加学生类 输入学生id, 3      * 判断是否被占用 若未被占用,则输入姓名,创建新的学生对象,并且把该对象添加到Map中 4      * 否则,则提示已有该id 5      */ 6     public void AddStu() { 7         System.out.println("请输入要添加的学生id:"); 8         String Id = in.next();// 接受输入的id 9         Student st=students.get(Id);10         if(st==null){11 12             System.out.println("请输入要添加的学生姓名:");13             String name = in.next();// 接受输入的name14             this.students.put(Id, new Student(Id, name));15         }else{16             System.out.println("此Id已被占用!");17         }18 19     }
Schreiben Sie eine Testfunktion, die eine Ausgabe druckt, wie zum Beispiel:

 1 /* 2      * 打印学生类 3      * 
 4      */ 5     public void PrintStu() { 6         System.out.println("总共有"+this.students.size()+"名学生:"); 7         //遍历keySet 8         for (String s : this.students.keySet()) { 9             Student st=students.get(s);10             if(st!=null){11             System.out.println("学生:" + students.get(s).getId() + "," + students.get(s).getName());12             }13         }14     }
The Das obige Beispiel ist: Verwenden Sie Maps

keySet(), um die Set-Sammlung von Schlüsseln in der Map zurückzugeben, und verwenden Sie dann if, um die Ausgabe zu beurteilen . In Map können Sie auch verwenden enterSet() Methode zum Zurückgeben von Schlüssel-Wert-Paaren Eintrag in Map, wie zum Beispiel:

 1 /* 2      * 通过entrySet方法遍历Map 3      */ 4     public void EntrySet(){ 5         Set<Entry<String, Student>> entrySet =students.entrySet(); 6         for(Entry<String, Student> entry:entrySet){ 7             System.out.println("取得建:"+entry.getKey()); 8             System.out.println("对应的值:"+entry.getValue().getName()); 9 10         }11     }
Schließlich verwenden wir die Hauptfunktion, um diese Funktionen aufzurufen, um den Effekt zu sehen

1 public static void main(String[] args) {2         StuMap stu = new StuMap();3         for (int i = 0; i < 3; i++) {4             stu.AddStu();5         }6         stu.PrintStu();7         stu.EntrySet();8     }
Codeanalyse:

1.student.get(ID) verwendet die get()-Methode von Map, um zu erkennen, ob es einen Schüler gibt, dessen Wert ist ID. Wenn nicht, geben Sie null zurück.

Hier geht es darum, den Schlüsselwert in der Karte auf den ID-Wert des Schülers zu setzen, damit er auf diese Weise erkannt werden kann. Wenn es sich bei dem Schlüsselwert um andere Attribute des Schülers handelt, ist das eine andere Sache! !

2.keySet()-Methode gibt die Set-Sammlung aller Schlüssel zurück.

3.keyset() gibt alle Schlüssel in der Map in Form eines Satzes zurück, der von der Set-Sammlung empfangen werden kann. Die Zuordnung in HashMap ist ungeordnet.

3.Map kann auch die Methode „entrySet()“ verwenden, um das Schlüssel-Wert-Paar „Entry“ in der Map zurückzugeben. Es kann auch „

getKey()“ und „

getValue“ aufrufen () Methode zum Abrufen des Schlüssels “ und des „Werts des Schlüssel-Wert-Paares. Laufergebnisse:

3. Studentenkursauswahl – Studenten in der Karte löschen

Schlüsselwerte in löschen die Karte Ja, die Methode „remove(object key)“ wird aufgerufen. Hier ist ein Beispiel für ihre Verwendung:

 1 /* 2      * 删除map中映射 3      */ 4     public void RemoveStu(){ 5         do{ 6         System.out.println("请输入要删除的学生id:"); 7         String Id = in.next();// 接受输入的id 8         Student st=students.get(Id); 9         if(st==null){10             System.out.println("此id不存在!");11             12         }else{13             this.students.remove(Id);14             System.out.println("成功删除"+st.getId()+","+st.getName()+"同学");15             break;16         }17         }while(true);18     }
Laufendes Ergebnis:

4. Studentenkursauswahl – Studenten in Map ändern

Es gibt zwei Möglichkeiten, die Schlüssel-Wert-Paare in Map zu ändern. Die erste ist die Verwendung der

Put-Methode

. Tatsächlich wird es in die Add-Methode eingefügt. Die Verwendungsmethode ist die gleiche wie bei Add. Die Essenz besteht hier darin, die Originaldaten mit zu überschreiben, also zu ändern.

Zusätzlich zur Put-Methode bietet Map eine Methode namens „replace“, die, wie Sie wissen, „ersetzen“ bedeutet. Die Methode „replace“ wird genauso verwendet wie die Methode „put“, da ihr interner Quellcode wie folgt lautet:
 1 /* 2      * 利用put方法修改Map中的value值 3      */ 4     public void ModifyStu(){ 5         do{ 6             System.out.println("请输入要修改的学生id:"); 7             String Id = in.next();// 接受输入的id 8             Student st=students.get(Id); 9             if(st==null){10                 System.out.println("此id不存在!");11                 12             }else{13                 System.out.println("学生原来的姓名:"+st.getName()+",请输入修改后的姓名:");14                 String name = in.next();// 接受输入的name15                 st=new Student(Id,name);16                 this.students.put(Id,st);17                 System.out.println("成功修改!修改后的学生为:"+st.getId()+","+st.getName()+"同学");18                 break;19             }20             }while(true);21         22     }

可以看出replace方法就是调用put方法来完成修改操作的,但是我们为了和添加put进行区分,最好在使用修改的时候用replace方法进行修改。这样的代码可读性和维护性就增强了。

那么使用replace修改Map中的value值如下:(推荐使用replace方法)

 1 /* 2      * 利用replace方法修改Map中的value值 3      */ 4     public void Modify(){ 5         do{ 6             System.out.println("请输入要修改的学生id:"); 7             String Id = in.next();// 接受输入的id 8             Student st=students.get(Id); 9             if(st==null){10                 System.out.println("此id不存在!");11                 12             }else{13                 System.out.println("学生原来的姓名:"+st.getName()+",请输入修改后的姓名:");14                 String name = in.next();// 接受输入的name15                 st=new Student(Id,name);16                 this.students.replace(Id, st);17                 System.out.println("成功修改!修改后的学生为:"+st.getId()+","+st.getName()+"同学");18                 break;19             }20             }while(true);21     }

运行结果:


五、总结

Map -特点:元素成对出现,key-value,是映射关系,key不能重复,但value可以重复,也就是说,可以多key对一个value。支持泛型如Map

-实现类:HashMap是最常用的,HashMap中是无序排列,其元素中key或value可为null(但只能有一个为null)。

-声明(泛型)举例: 在类中声明 public Map<类型1, 类型2> xxx; 然后再构造方法中this.xxx = new HashMap<类型1, 类型2();

-获取:yy temp = xxx.get(key)

-添加:xxx.put( key(xx型), zz(yy型) );

-返回map中所有key(返回是set型集合形式) set xxxxx = xxx.keyset(); 用于遍历。

-返回map中所有entry对(key-value对)(返回是set型集合形式) set> xxxxx = xxx.entrySet(); 同样用于遍历。 遍历时:for(Entry 元素: xxxxx)

-删除:xxx.remove(key);

-修改可以用put,当put方法传入的key存在就相当于是修改(覆盖);但是推荐使用replace方法!

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in Map&HashMapde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist Vererbung?Nächster Artikel:Was ist Vererbung?