哈希表java
Hashtable-哈希表類\x0d\x0a\x0d\x0a以哈希表的形式存儲數據,數據的形式是鍵值對.\x0d\x0a特點:\x0d\x0a查找速度快,遍歷相對慢\x0d\x0a鍵值不能有空指針和重復數據\x0d\x0a\x0d\x0a創建\x0d\x0aHashtable ht=new \x0d\x0aHashtable();\x0d\x0a\x0d\x0a添值\x0d\x0a\x0d\x0aht.put(1,"Andy");\x0d\x0aht.put(2,"Bill");\x0d\x0aht.put(3,"Cindy");\x0d\x0aht.put(4,"Dell");\x0d\x0aht.put(5,"Felex");\x0d\x0aht.put(6,"Edinburg");\x0d\x0aht.put(7,"Green");\x0d\x0a\x0d\x0a取值\x0d\x0a\x0d\x0aString str=ht.get(1);\x0d\x0aSystem.out.println(str);// Andy\x0d\x0a\x0d\x0a對鍵進行遍歷\x0d\x0a\x0d\x0aIterator it = ht.keySet().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a Integer key = (Integer)it.next();\x0d\x0a \x0d\x0aSystem.out.println(key);\x0d\x0a}\x0d\x0a\x0d\x0a對值進行遍歷\x0d\x0a\x0d\x0aIterator it = ht.values().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a String value =(String) it.next();\x0d\x0a \x0d\x0aSystem.out.println(value);\x0d\x0a}\x0d\x0a\x0d\x0a取Hashtable記錄數\x0d\x0a\x0d\x0aHashtable ht=new Hashtable();\x0d\x0a\x0d\x0aht.put(1,"Andy");\x0d\x0aht.put(2,"Bill");\x0d\x0aht.put(3,"Cindy");\x0d\x0aht.put(4,"Dell");\x0d\x0aht.put(5,"Felex");\x0d\x0aht.put(6,"Edinburg");\x0d\x0aht.put(7,"Green");\x0d\x0a\x0d\x0aint i=ht.size();// 7\x0d\x0a\x0d\x0a刪除元素\x0d\x0a\x0d\x0aHashtable ht=new Hashtable();\x0d\x0a\x0d\x0aht.put(1,"Andy");\x0d\x0aht.put(2,"Bill");\x0d\x0aht.put(3,"Cindy");\x0d\x0aht.put(4,"Dell");\x0d\x0aht.put(5,"Felex");\x0d\x0aht.put(6,"Edinburg");\x0d\x0aht.put(7,"Green");\x0d\x0a\x0d\x0aht.remove(1);\x0d\x0aht.remove(2);\x0d\x0aht.remove(3);\x0d\x0aht.remove(4);\x0d\x0a\x0d\x0aSystem.out.println(ht.size());// 3\x0d\x0a\x0d\x0aIterator it = ht.values().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a // Get value\x0d\x0a String value =(String) \x0d\x0ait.next();\x0d\x0a System.out.println(value);\x0d\x0a}
② 用Java語言在哈希表對應的文本文件如何讀出來
import java.io.*;
public class hh {
/**
* @param args
*/
public static void main(String[] args) {
// 指定讀取的行號
int lineNumber = 2;
// 讀取文件
//File sourceFile = new File("D:/java/test.txt");
File sourceFile = new File("C://TEXT.txt");
try {
// 讀取指定的行
readAppointedLineNumber(sourceFile, lineNumber);
// 獲取文件的內容的總行數
System.out.println(getTotalLines(sourceFile));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 讀取文件指定行。
static void readAppointedLineNumber(File sourceFile, int lineNumber)
throws IOException {
FileReader in = new FileReader(sourceFile);
LineNumberReader reader = new LineNumberReader(in);
String s = "";
if (lineNumber <= 0 || lineNumber > getTotalLines(sourceFile)) {
System.out.println("不在文件的行數范圍(1至總行數)之內。");
System.exit(0);
}
int lines = 0;
while (s != null) {
lines++;
s = reader.readLine();
if((lines - lineNumber) == 0) {
System.out.println(s);
System.exit(0);
}
}
reader.close();
in.close();
}
// 文件內容的總行數。
static int getTotalLines(File file) throws IOException {
FileReader in = new FileReader(file);
LineNumberReader reader = new LineNumberReader(in);
String s = reader.readLine();
int lines = 0;
while (s != null) {
lines++;
s = reader.readLine();
if(lines>=2){
if(s!=null){
System.out.println(s+"$");
}
}
}
reader.close();
in.close();
return lines;
}
}
③ JAVA創建一個哈希表儲存數據並輸出,要完整代碼
我就不寫了,給個提示吧:
建一個類,名字就叫員工,它有三個屬性,分別是你要的三個數據,名字、工齡、工號。然後,每次put的時候這樣:put('1234',員工1);以員工工號為key,類員工為value
④ java7和java8對hashmap做了哪些優化
HashMap的原理介紹x0dx0ax0dx0a此乃老生常談,不作仔細解說。x0dx0a一句話概括之:HashMap是一個散列表,它存儲的內容是鍵值對(key-value)映射。x0dx0ax0dx0aJava 7 中HashMap的源碼分析x0dx0ax0dx0a首先是HashMap的構造函數代碼塊1中,根據初始化的Capacity與loadFactor(載入因子)初始化HashMap.x0dx0a//代碼塊1x0dx0a public HashMap(int initialCapacity, float loadFactor) {x0dx0a if (initialCapacity < 0)x0dx0a throw new IllegalArgumentException("Illegal initial capacity: " +x0dx0a initialCapacity);x0dx0a if (initialCapacity > MAXIMUM_CAPACITY)x0dx0a initialCapacity = MAXIMUM_CAPACITY;x0dx0a if (loadFactor <= 0 || Float.isNaN(loadFactor))x0dx0a throw new IllegalArgumentException("Illegal load factor: " +loadFactor);x0dx0ax0dx0a this.loadFactor = loadFactor;x0dx0a threshold = initialCapacity;x0dx0a init();x0dx0a }x0dx0ax0dx0aJava7中對於
⑤ java中hashtable怎樣存儲數據和讀取數據
Hashtable-哈希表類
以哈希表的形式存儲數據,數據的形式是鍵值對.
特點:
查找速度快,遍歷相對慢
鍵值不能有空指針和重復數據
創建
Hashtable<Integer,String> ht=new
Hashtable<Integer,String>();
添值
ht.put(1,"Andy");
ht.put(2,"Bill");
ht.put(3,"Cindy");
ht.put(4,"Dell");
ht.put(5,"Felex");
ht.put(6,"Edinburg");
ht.put(7,"Green");
取值
String str=ht.get(1);
System.out.println(str);// Andy
對鍵進行遍歷
Iterator it = ht.keySet().iterator();
while (it.hasNext()) {
Integer key = (Integer)it.next();
System.out.println(key);
}
對值進行遍歷
Iterator it = ht.values().iterator();
while (it.hasNext()) {
String value =(String) it.next();
System.out.println(value);
}
取Hashtable記錄數
Hashtable<Integer,String> ht=new Hashtable<Integer,String>();
ht.put(1,"Andy");
ht.put(2,"Bill");
ht.put(3,"Cindy");
ht.put(4,"Dell");
ht.put(5,"Felex");
ht.put(6,"Edinburg");
ht.put(7,"Green");
int i=ht.size();// 7
刪除元素
Hashtable<Integer,String> ht=new Hashtable<Integer,String>();
ht.put(1,"Andy");
ht.put(2,"Bill");
ht.put(3,"Cindy");
ht.put(4,"Dell");
ht.put(5,"Felex");
ht.put(6,"Edinburg");
ht.put(7,"Green");
ht.remove(1);
ht.remove(2);
ht.remove(3);
ht.remove(4);
System.out.println(ht.size());// 3
Iterator it = ht.values().iterator();
while (it.hasNext()) {
// Get value
String value =(String)
it.next();
System.out.println(value);
}
⑥ java中的Hashtable怎麼用,請詳細舉例子說明,拜託了 謝謝
就是哈希表,下面這個示例創建了一個數字的哈希表。它將數字的名稱用作鍵: Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
要獲取一個數字,可以使用以下代碼:
Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
⑦ java中HashSet的哈希表和ASCII碼還有2進制之間是什麼關系
首先電腦只有0,1就是所謂的二進制;HashSet的哈希表是通過哈希演算法來的(後面一個數是前面兩個數之和),HashSet裡面是通過哈希演算法計算出值然後形成的一條哈希單向鏈;而ASCII碼是位元組數,就像你傳輸IO流底層都是通過byte實現的,所以無論什麼都可以變成byte位元組,比如某個東西變成byte位元組這個位元組數就是ASCII碼了。
第二個問題Iterator遍例器,一個循環中只能有一個next()方法,不然你while判斷幹嘛,如果值是單數會拋異常,然後你的sop方法傳的是Object類型的,這個就是多態了;Object obj = (A.getName()+...+A.getAge());然後你列印Object類型的值,記住除了String類型重寫了toString方法外,別的引用類型都繼承了Object的toString方法輸出的引用地址,你的代碼直接在Person中重寫toString方法就可以了。
⑧ HashCode的作用原理和實例解析
Java中的集合有兩類,一類是List,再有一類是Set。前者集合內的元素是有序的,元素可以重復;後者元素無序,但元素不能重復。
equals()方法可以保證元素不重復。但如果每增加一個元素就檢查一次,若集合現在已經有1000個元素,那麼第1001個元素加入集合時,就要調用1000次equals方法。這顯然會大大降低效率。於是,java採用了哈希表的原理。
哈希演算法也稱為散列演算法,是將數據依特定演算法直接指定到一個地址上。
這樣一來,當即和要添加新的元素時,先調用這個元素的HashCode方法,就一下子能定位到它應該放置的物理位置上。
從Object角度看,JVM每new一個Object,它就會將這個Object丟到一個Hash表中去,這樣的話,下次做Object的比較或者取這個對象的時候(讀取過程),它會根據對象的HashCode再從Hash表中取這個對象。這樣做的目的是提高取對象的效率。若HashCode相同再去調用equal
HashCode是用於查找使用的,而equals是用於比較兩個對象是否相等的。
而我有個類,這個類有個欄位叫ID,我要把這個類存放在以上8個位置之一,如果不用HashCode而任意存放,那麼當查找時就需要到這八個位置里挨個去找,或者用二分法一類的演算法。
但以上問題如果用HashCode就會使效率提高很多。定義我們的HashCode為ID%8,比如我們的ID為9,9除8的余數為1,那麼我們就把該類存在1這個位置上,如果ID是13,求得的余數是5,那麼我們就把該類放在5這個位置。以此類推。