本文目錄一覽:
java中的集合map問題
iter.next()
當遍歷到最後一個的時候
正好被iter.next()打印出來了
然後又要打印下一個 這時已經沒有下一個了
所以會報錯
解決方法有兩個
hashtable添加一對key和value
或者用推薦答案的方法
感覺你想表達的也是 先打印key 然後打印對應的value
就用用object方法就行
for(Iterator iter = map.keySet().iterator();iter.hasNext();)
{
Object obj = iter.next();
System.out.println(obj);
System.out.println( map.get(obj));
}
java集合定義map
Map接口映射唯一鍵的值。一個關鍵是,要使用在日後檢索值對象。
給定一個鍵和一個值,可以在一個Map對象存儲的值。後的值被存儲時,可以使用它的鍵檢索。
拋出一個NoSuchElementException異常,是因為調用映射不存在的項目。
當一個對象是在映射上的元素不兼容拋出一個ClassCastException異常。
NullYiibaierException異常被拋出,如果試圖使用一個空對象。
當試圖改變一個不可修改的Map,則拋出一個UnsupportedOperationException異常。
SN
方法與描述
void clear( )
移除調用映射的所有鍵/值對。
boolean containsKey(Object k)
返回true如果調用映射包含k作為重點。否則,返回false。
boolean containsValue(Object v)
返回true如果映射包含v作為一個值。否則,返回false。
Set entrySet( )
返回一組包含在地圖中的條目。該集合包含類型Map.Entry對象。這種方法提供了一組視圖調用地圖。
boolean equals(Object obj)
如果obj是一個Map返回true,並且包含相同的條目。否則,返回false。
Object get(Object k)
返回與k關聯的值。
int hashCode( )
返回調用映射的哈希代碼。
boolean isEmpty( )
如果調用映射為空返回true。否則,返回false。
Set keySet( )
返回一個集,其中包含調用映射的鍵。這種方法提供了一組視圖中調用映射的鍵。
Object put(Object k, Object v)
放入調用映射中的條目,覆蓋與鍵相關聯的任何一個值。鍵和值分別為k和v。如果不已經存在鍵返回null。否則,將返回關聯鍵的前一個值。
void putAll(Map m)
把從m所有條目放進入此映射。
Object remove(Object k)
刪除其關鍵字等於k中的條目。
int size( )
返回在映射上的鍵/值對的數目。
Collection values( )
返回包含在映射中的值的集合。這種方法提供了一個集合視圖在映射中的值。
例子:
映射有其不同的類實現,比如HashMap。下面是例子來說明映射功能:
Map Elements
{Mahnaz=31, Ayan=12, Daisy=14, Zara=8}
關於Java集合—MAP問題
//我在你的相關語句上進行了注釋
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
class Stu
{
String name;
int age;
public void setName(String str)
{
name=str;
}
public void setAge(int i)
{
age=i;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
public class Test {
private MapString, Integer maps = new HashMapString, Integer();;
private Stu su = new Stu();
public void tte() {
su.setName(“小明”);
su.setAge(22);
// su.setName(“小張”);
// su.setAge(21);
System.out.println(“添加前沒有數據是嗎?:—–” + maps.isEmpty());//一上來當然沒有數據啦
if (maps.isEmpty() == false) {
System.out.println(“已有數據,不需添加了”);//現在你並沒添加數據,當然不會輸出
} else if (maps.isEmpty() == true) { //既然沒添加數據,條件成立,執行語句
maps.put(su.getName(), su.getAge());
System.out.println(“已添加”);
System.out.println(“添加後沒有數據是嗎?:” + maps.isEmpty());
}
}
public static void main(String[] args) {
Test t = new Test();
t.tte();
}
}
//最後說一點,你的
if (maps.isEmpty() == false) {
System.out.println(“已有數據,不需添加了”);
這個語句在程序的開始,當然不可能輸出.並且,就算是添加了,也只是在程序運行時加進了內存.程序第二次運行時,系統分配了新的內存.不知你是不是在這點上理解有誤.
原創文章,作者:MK7V3,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129593.html