導航:首頁 > 編程語言 > hashtable遍歷java

hashtable遍歷java

發布時間:2022-09-04 05:02:20

1. 請問各位java達人關於hashtable的問題,急啊!

統計考生人數:你可以定義一個計數器,讀取考生信息到一個集合中,判斷考生的學號 如果不相同就加1 然後把這個集合中所有考生學號是這個的信息刪除,這樣加下來就不會有重復的;
最高分 最低分 這兩個最簡單 只要把考生信息中的某一行進行比較(就是某一科目)就是排序就OK了 然後輸出對應的考生名和其他信息
平均分:應該是某一科目的平均分吧 就把這一科目中的所有成績相加 再處以考生人數 剛才已經有考生人數了 如果要算所有科目的平均分 就把這幾個科目的平均分相加 再除以科目總數就OK了
及格人數 再定義一個計數器 做循環 判斷考生在該課程中的分數是否小於60,如果小於60分就把現在剛才那個計數器-1,到最後就是及格人數了

還有你那個想法 你應該有資料庫吧 不知道你用什麼資料庫 mysql或者是其他不管什麼資料庫 中的數據表都是存放數據的 學生表裡應該有什麼屬性自己應該先想好了學生表: 學生ID 學生名字 學生班級 學生專業名稱 等等吧
專業信息表: 專業名稱 課程名稱
成績表:課程名稱 考生ID 考生成績
這幾個表要有連接關系 盡量減少冗餘
當然我這是隨便寫了幾個表 你可以根據自己的想法寫 最好跟同學商量商量
寫程序的時候最好是先設計資料庫 你寫好的程序最後是要顯示和處理資料庫中的數據的,不先設計好資料庫 等你程序寫完了 資料庫再有大的改動 你的程序就得大改了 甚至有可能得重寫程序
關於那個hashtable 我覺得不用它 跟上面說的一樣 在這里不是很好用

2. java問題,如何遍歷,這一個hashtable是啥意思

HashTable和HashMap是一樣的,區別只是同步與非同步問題;
遍歷方式和map一樣
兩種方式
使用keySet方法獲得所有的key,然後變數這個Set
或者是使用EntrySet方法,獲得所有鍵值對的視圖,遍歷可獲得所有的key和value

3. Java中HashMap和Hashtable之間的區別

Hashtable和HashMap類有三個重要的不同之處.第一個不同主要是歷史原因.Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現.

也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是.這就意味著,雖然你可以不用採取任何特殊的行為就可以在一個多線程的應用程序中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步.一個方便的方法就是利用Collections類的靜態的synchronizedMap()方法,它創建一個線程安全的Map對象,並把它作為一個封裝的對象來返回.這個對象的方法可以讓你同步訪問潛在的HashMap.這么做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應用程序中),而且同步增加了很多處理費用.

第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value.HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value.這就是說,如果在表中沒有發現搜索鍵,或者如果發現了搜索鍵,但它是一個空的值,那麼get()將返回null.如果有必要,用containKey()方法來區別這兩種情況.

一些資料建議,當需要同步時,用Hashtable,反之用HashMap.但是,因為在需要時,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基於一個陳舊的類的,所以有人認為,在各種情況下,HashMap都優先於Hashtable.

關於Properties
有時侯,你可能想用一個hashtable來映射key的字元串到value的字元串.DOS、Windows和Unix中的環境字元串就有一些例子,如key的字元串PATH被映射到value的字元串C:\WINDOWS;C:\WINDOWS\SYSTEM.Hashtables是表示這些的一個簡單的方法,但Java提供了另外一種方法.

Java.util.Properties類是Hashtable的一個子類,設計用於String keys和values.Properties對象的用法同Hashtable的用法相象,但是類增加了兩個節省時間的方法,你應該知道.

Store()方法把一個Properties對象的內容以一種可讀的形式保存到一個文件中.Load()方法正好相反,用來讀取文件,並設定Properties對象來包含keys和values.

注意,因為Properties擴展了Hashtable,你可以用超類的put()方法來添加不是String對象的keys和values.這是不可取的.另外,如果你將store()用於一個不包含String對象的Properties對象,store()將失敗.作為put()和get()的替代,你應該用setProperty()和getProperty(),它們用String參數.

4. java 多線程操作hashtable(添加,刪除,遍歷)

Hashtable 表示鍵/值對的集合,這些鍵/值對根據鍵的哈希代碼進行組織,它的Key不能為null,Value可以為null,這一點與Hashmap不同(本身不是線程安全的),對於Hashtable它是實現了IDictionary和ICollection介面的,它的key與value都是object類型的,不支持泛型,進行類型轉換成需要裝箱與拆箱(boxing,unboxing),這在性能肯定會有一些影響,所以,微軟這邊給出了支持泛型的鍵值對集合Dictionary,而Dictionary本身也不是線程安全的,我們需要對它加鎖(lock),才能避免多線程環境下產生的一些錯誤。
下面我們來看一下線程安全的Hashtable代碼片斷:
Hashtable ht = Hashtable.Synchronized(new Hashtable());
ht.Add("ok", null);
Console.WriteLine(ht["ok"]);

我們在來看一下Dictionary對象,可以使它基類提供的SyncRoot屬性,來實現它內部對象的線程安全
Dictionary<string, string> dic = new Dictionary<string, string>();
lock ((dic as ICollection).SyncRoot)
{
dic.Add("ok", "ok value");
}

下面我們來做一個實例,還是Dictionary的線程安全問題,我們有兩個線程,t1和t2,當我們為它加lock之後,t1純種在進行dic.Ad操作時,t2並不能進行訪問
當t1完成add操作後,t2線程才進行執行,這時它就可以改變dic 元素的值了,程序運行正常,但如果沒有lock鎖機制,t1與 t2線程誰先執行就不確定了,這時,
如果t1先執行,當然沒有問題,但如果t2先操作了,程序出現異常,因為dic元素沒有被add,所以無法改變其值。
看代碼:

Dictionary<string, string> dic = new Dictionary<string, string>();

Thread t1 = new Thread(() =>
{
lock ((dic as ICollection).SyncRoot) //dic對象被保存,處於臨界區
{
dic.Add("ok1", "ok value1");//這句先向字典添加
}
});

Thread t2 = new Thread(() =>
{
lock ((dic as ICollection).SyncRoot)
{
dic["ok1"] = "ok value2";
}
});

t1.Start();
t2.Start();
Thread.Sleep(2000);

而對於Hashtable來說,如果希望對它進行寫加鎖,讀不加鎖,也可以通過lock在代碼段時去實現

Thread t1 = new Thread(() =>
{
lock (ht.SyncRoot)
{

ht.Add(i, i);
}
});

OK,對於hashtable的線程安全這塊就說到這里,最後和大家說一下,咱們做WEB開發的工程師們,一定要注意線程安全這塊的知識,因為你寫的程序,肯定是處
於多線程環境下的

5. JAVA Set Iterator遍歷的順序是怎麼樣的

可以用java.util.LinkedHashMap 就是按加入時的順序遍歷了。
類似的還有 java.util.LinkedHashSet

6. 工作中你是如何用Java 遍歷 Map的呢

在java中遍歷Map有不少的方法。我們看一下最常用的方法及其優缺點。

既然java中的所有map都實現了Map介面,以下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)

方法一、 在for-each循環中使用entries來遍歷

這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。

作為方法一的替代,這個代碼看上去更加干凈;但實際上它相當慢且無效率。因為從鍵取值是耗時的操作(與方法一相比,在不同的Map實現中該方法慢了20%~200%)。如果你安裝了FindBugs,它會做出檢查並警告你關於哪些是低效率的遍歷。所以盡量避免使用。

總結

如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。

7. 新人求解,為什麼遍歷Hashtable輸出的順序是反的

hashCode() 方法得到其 hashCode 值——每個 Java 對象都有 hashCode() 方法,都可通過該方法獲得它的 hashCode 值。得到這個對象的 hashCode 值之後,系統會根據該 hashCode 值來決定該元素的存儲位置。
一般來說hasmap存的是無序的

8. 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);
}

9. java中HashMap和HashTable有什麼共同點和區別

HashMap和Hashtable都實現了Map介面,主要的區別有:
1、同步方面:Hashtable的方法是同步的,HashMap未經同步,所以在多線程場合要手動同步HashMap。
2、賦值方面:Hashtable不允許 null 值(key 和 value 都不可以),HashMap允許 null 值(key和value都可以)。
3、遍歷方式不同:Hashtable比HashMap多一個elements方法。
4、動態數組增加方式不同:Hashtable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數。

閱讀全文

與hashtable遍歷java相關的資料

熱點內容
加密貨幣交易天堂 瀏覽:828
華為手機為什麼不升級安卓11 瀏覽:42
linuxrpm卸載jdk 瀏覽:860
mysql許可權設置命令 瀏覽:618
hexophp 瀏覽:271
用什麼app買東西半價 瀏覽:62
蘋果下載的pdf文件怎麼打開 瀏覽:211
如何在伺服器上隱藏源站地址 瀏覽:645
單片機進制字母對應表 瀏覽:528
向某人下命令 瀏覽:627
編程中刪除數組中的數 瀏覽:86
aes對稱加密反編譯 瀏覽:550
java編譯成exe 瀏覽:190
gps處理演算法 瀏覽:596
什麼app可以和對象存錢 瀏覽:146
java字元串表達式計算 瀏覽:330
javacmd環境變數 瀏覽:51
電視上面找不到全民歌app怎麼辦 瀏覽:156
單片機中psw0 瀏覽:994
優酷視頻加密么 瀏覽:763