чӣ тавр луғат дар java


ҷавоб диҳед 1:

Луғат як синфи абстрактӣ буда, робитаи дорои аҳамияти калидиро ифода мекунад ва ба харита шабоҳат дорад. Ҳам калидҳо ва ҳам арзиш метавонанд объектҳои ҳама гуна шакл бошанд, аммо сифр намебошанд. Кӯшиши ба луғат дохил кардани калиди сифр ё нул, ба истиснои NullPointerException меорад. Аз ин рӯ, ҳатмист, ки барои ҳар ду калид ва ҳам арзишҳо арзиши ғайри сифрӣ таъмин карда шавад .Дар типи умумӣ аст. Ҳарчанд иҷрои амалҳо луғат тезтар аст, зеро бокс / қуттича мавҷуд нест (валютипҳо ба бокс ниёз надоранд) .Дар бехатарии ришта вуҷуд надорад. , агар ба шумо бехатарии ришта лозим бошад, шумо бояд синхронизатсияи худро амалӣ кунед.

Мисоли оддӣ:

DictionaryLllMethods2 { public static void main (String [] args) { // Оғози як луғат Луғат d = Hashtable нав (); // усули () d.put ("1", "Java"); d.put ("2", "Барномасозӣ"); d.put ("3", "Забон"); // element () усул: Номгузорӣ v = d.elements (); дар ҳоле ки (v.hasMoreElements ()) { System.out.println ("Арзиш дар луғат:" + v.nextElement ()); } }}

Натиҷа:

Арзиш дар луғат: ЗабонАрзиш дар луғат: БарномасозӣАрзиш дар луғат: Java

Усулҳо дар луғат:

Тавсифи усул
V put (K key, арзиши V): ба луғат ҷуфти арзиши калидӣ илова мекунад.
Унсурҳои ҳисобкунӣ (): муаррифии арзишро дар луғат бармегардонанд.
V get (key key): аҳамиятро, ки бо калиди баҳс дар луғат харҷ шудааст, бармегардонад.
boolean isEmpty (): холӣ будани луғатро месанҷад.
Калидҳои ҳисобкунӣ (): намояндагии калидро дар луғат бармегардонанд.
V remove (Калиди объект): ҷуфти арзиши калидро, ки бо калиди далелдоршуда харида шудаанд, дур мекунад.
int size (): баргардонидани ҳеҷро. ҷуфти арзиши калидӣ дар луғат.

Намуна:

Луғати дараҷаи оммавӣMethodsDemo { public static void main (String [] args) { // Оғози як луғат Луғат d = Hashtable нав (); // усули () d.put ("1", "Java"); d.put ("2", "Барномасозӣ"); d.put ("3", "Забон"); // element () усул: Номгузорӣ v = d.elements (); дар ҳоле ки (v.hasMoreElements ()) { System.out.println ("Арзиш дар луғат:" + v.nextElement ()); } // усул () System.out.println ("\ nМасъалаи луғат:" + d.size ()); // get () усули: System.out.println ("Арзиш дар калиди = 2:" + d.get ("2")); // усули isEmpty (): System.out.println ("\ nЯгон ҷуфти арзиши калидӣ вуҷуд надорад:" + d.isEmpty () + "\ n"); // калидҳо (): Номгузорӣ k = d.keys (); дар ҳоле ки (k.hasMoreElements ()) { System.out.println ("Калидҳо дар луғат:" + k.nextElement ()); } // усули хориҷ кардан (): System.out.println ("\ nБарои амал:" + d.remove ("1")); System.out.println ("Санҷед арзиши калиди хориҷшуда:" + d.get ("1")); // усули хориҷ кардан (): d.remove ("2"); d.remove ("3"); // усули isEmpty (): System.out.println ("\ nЯгон ҷуфти арзиши калидӣ вуҷуд надорад:" + d.isEmpty () + "\ n"); }}

Натиҷа:

Арзиш дар луғат: ЗабонАрзиш дар луғат: БарномасозӣАрзиш дар луғат: JavaҲаҷми луғат: 3Арзиш дар калиди = 2: БарномасозӣЯгон арзиши калидӣ вуҷуд надорад: бардурӯғКалидҳо дар луғат: 3Калидҳо дар луғат: 2Калидҳо дар луғат: 1Хориҷ: JavaАрзиши калиди хориҷшударо санҷед: сифрЯгон арзиши калидӣ вуҷуд надорад: рост

ҷавоб диҳед 2:

Луғат як синфи абстрактӣ мебошад, ки калидҳои арзишҳоро харита мекунад. Ҳар як калид бо арзиши беназир алоқаманд аст ва калид беназир аст. Ҳама гуна ашёи дорои сифр барои ҳам калид ё ҳам арзиши истифода шуда метавонад. Кӯшиши ба луғат дохил намудани калиди сифр ё сифр, ба NullPointerException натиҷа медиҳад.

Аммо, ҳоло синфи аслии луғат кӯҳна шудааст ва ба ҷои ин, ҳамаи амалиётҳои нав Mapinterface -ро бояд татбиқ кунанд. Интерфейси Харитаҳо вазифаи луғатро бо истифода аз семантикаи якхела таъмин менамояд. Харита метавонад се манзараеро пешниҳод кунад, ки имкон медиҳанд мундариҷаи харитаҳо ҳамчун маҷмӯи калидҳо, ҷамъоварии арзишҳо ё маҷмӯи харитасозии калидҳо ба назар гирифта шаванд. Дар ниҳоят, баъзе амалигардонии интерфейси Map дар байни арзишҳои худ тартибро нигоҳ медоранд.

Интерфейси Харита

Харита дорои Харита дорад куҷо:

  • K: намуди калидҳоро, ки дар ин харита нигоҳ дошта мешаванд, муайян мекунад.
  • V: навъи арзишҳои харитасаро муайян мекунад.

Ғайр аз он, интерфейси Харита маҷмӯи усулҳоеро таъмин менамояд, ки бояд амалӣ шаванд. Дар ин бахш мо баъзе аз усулҳои бунёдии харитаро пешниҳод хоҳем кард:

  • includeKey: Агар харита калиди дархостшударо дар бар гирад, рост бармегардад.
  • includeValue: Агар харита арзиши пурсидаро дар бар гирад, бармегардад.
  • даст: арзиши калиди дархостшударо гиред.
  • keySet: Маҷмӯи дорои калидҳои харитаро бармегардонад.
  • гузошта: Ҷуфти арзиши дархостшударо дар харита илова мекунад.

Интерфейси Map аз ҷониби синфҳои гуногуни Java, ба монанди HashMap, Hashtable ва LinkedHashMap амалӣ карда мешавад. Ин дарсҳо қобилияти пурраи луғатро доранд. Аммо, ин дарсҳо дар баъзе ҷиҳатҳои асосӣ фарқ мекунанд, ки дар зер оварда мешаванд:

HashTable - HashMap

Синфи Hashtable ҷадвали ҳэшро амалӣ мекунад ва калидҳоро барои арзишҳо харита мекунад. A HashMap як ҷадвали хэш асоси татбиқи интерфейси Map мебошад. Онҳо ҳарду дорои ду параметрҳои асосӣ мебошанд: қобилияти аввалия ва иҷрои. Иқтидор ҳамчун миқдори сатил дар ҷадвали хэш муайян карда мешавад, дар ҳоле ки омили сарборӣ ченакест, ки арзиши ҳадди аксар дар ҷадвали хэш ба даст оварда мешавад, пеш аз он, ки худкор афзоиш ёбад.

Мисоле, ки HashMap-ро ҳамчун луғат истифода мекунад, дар зер нишон дода шудааст. Инчунин, барнома метавонад ба таври дуруст иҷро карда шавад, агар мо намуди харитаи худро ба Hashtable иваз кунем:

воридоти java.io.BufferedReader;

воридоти java.io.File;

импорт java.io.FileReader;

воридоти java.io.IOException;

воридоти java.util.HashMap;

воридоти java.util.Hashtable;

воридоти java.util.Map;

синфи ҷамъиятӣ CountWords_v1 {

public static void main (String [] args) IOException {мепартояд

BufferedReader Reader = нав BufferedReader (FileReader нав (File нав ("input.txt")));

Сатри inputLine = null;

Луғати харита = HashMap нав ();

// Луғати харита = Hashtable нав ();

while ((inputLine = reader.readLine ())! = null) {

// Тақсимоти хати вуруд.

Сатри [] word = inputLine.split ("\\ s +")

// Хатҳои холиро рад кунед.

агар (inputLine.equals (""))

идома додан;

барои (калимаи сатр: калимаҳо) {

// Ҳама гуна вергулҳо ва нуқтаҳоро нест кунед.

калимаи = word.replace (".", "");

калимаи = word.replace (",", "");

агар (луғат.containsKey (калима)) {

Integer val = dictionary.get (калима);

луғат.put (калима, вал + 1);

}

дигар

луғат.put (калима, 1);

}

}

// Чоп кардани ҳама калимаҳои дар харита ҳифзшуда.

барои (Калиди сатр: dictionary.keySet ())

System.out.println (калиди + ":" + dictionary.get (калид));

Reader.close ();

}

}

Дар ин мисол, мо HashMap-ро барои нигоҳ доштани суханони файл истифода кардем ва чанд маротиба ҳар як калима дар он файл пайдо мешавад.

Иҷрои намуна дар зер нишон дода шудааст:

n ин мисол, мо HashMap-ро барои нигоҳ доштани суханони файл истифода кардем ва чанд маротиба ҳар як калима дар он файл пайдо мешавад.

Иҷрои намуна дар зер нишон дода шудааст:

ба: 2Geeks: 1HashMaps: 1аст: 2матн: 1а: 1Инчунин: 1Ҳашттабл: 1аз: 1Нақшаҳои пайвандшуда: 1: 2маҳз: 1Харитаҳо: 1истифодашуда: 1Код: 1Ин: 1Ҷава: 2ва: 1салом: 1ки: 1ҳозир: 1аз: 2қудрат: 2ҳама: 1намуна: 1

ҷавоб диҳед 3:

Агар ба шумо луғати воқеӣ лозим бошад, ман ин тавр амал мекардам:

  1. Сохтани синфи 'compiler'. Он тамоми калимаҳо -> тасвири / тарҷумаи ҷуфтҳоро аз баъзе манбаъҳо (файли матнӣ, JDBC ва ғ.) Хонда, намунаҳои синфҳоро, ки ин арзишҳоро ташкил медиҳанд ва баъдан он синфҳоро ба рӯйхат дохил карда ба Рӯйхати <> илова мекунад. Пас ин Рӯйхатро <> бо Collections.sort () ҷудо кунед. Пас онро бо файли синфи ObjectOutputStream ва усули writeObject () ба як файли дуӣ бароред.
  2. Истифодабарандаи воқеии ин луғат. Он дар оғоз readObject () -ро аз ObjectInputStream мехонад ва пас шумо метавонед ҳар гуна калимаро дар Рӯйхат <> бо истифодаи Collections.binarySearch () истифода баред. Ман Харитаҳоро истифода намебарам <> зеро дар харита шумо танҳо калимаи _whole_ ва дар ман буда метавонед. парванда, шумо метавонед ҳатто як қисми калимаро ҷустуҷӯ кунед.

ҷавоб диҳед 4:

Барои сохтани як сохтори додаҳои луғатӣ дар Java, ҳама синферо истифода баред, ки онро иҷро кунад

Харитаи

интерфейс ба монанди

HashMap

,

TreeMap

ё

EnumMap

ба чанд нафар ном гузоштан. Масалан, биёед бигӯем, ки шумо мехоҳед, ки калимаҳои харитасозии луғатро ба шумораи пайдоиши онҳо дар як китоб созед:

Харитаи калимаҳо = HashMap нав ();word.put ("ҷаҳида", 7);word.put ("саг", 5);word.put ("хушбахт", 21);

ҷавоб диҳед 5: