java map中怎麼通過鍵取出值

在java map中取出鍵值有以下兩種方法:

1.第一種方法根據鍵值的名字取值

import java.util.HashMap;

import java.util.Ma

ublic class Test {

public static void main(String[] args)

{ // TODO Auto-generated method stub

Map<String, Object> map=new HashMap<String, Object>();

map.put("id", "sunny");

map.put("value", "syl");

System.out.println(map.get("id"))

System.out.println(map.get("value")); }

2.第二種方法:遍歷

import java.util.HashMap;

import java.util.Map;

import java.util.Set

ublic class Test {

public static void main(String[] args)

{

Map<String, Object> map=new HashMap<String, Object>();

map.put("id", "sunny");

map.put("value", "syl");

Set<String> get = map.keySet();

for (String test:get)

{

System.out.println(test+","+map.get(test));

} }

② Java中,復制一個對象,有什麼好的方法

使用Java的反射機制實現:為了能更好的區分,寫成了兩個類,可以運行下面的代碼看看效果
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
Customer1 c1 = new Customer1();
c1.setName("c1");
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
c1.setList(list);
Map<String,String> map = new HashMap<String, String>();
map.put("map1", "map1");
map.put("map2", "map2");
c1.setMap(map);
Customer2 c2 = new Customer2();
//
Class c = c1.getClass();
Class class2 = c2.getClass();
Field fields[] = c.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getMethodName = "get" + firstLetter + fieldName.substring(1);
String setMethodName = "set" + firstLetter + fieldName.substring(1);
Method getMethod = c.getMethod(getMethodName, new Class[] {});
Method setMethod = class2.getMethod(setMethodName,
new Class[] { field.getType() });
Object value = getMethod.invoke(c1, new Object[] {});
setMethod.invoke(c2, new Object[] { value });
}
System.out.println(c2.getName());
System.out.println(c2.getList());
System.out.println(c2.getMap());
}
}
class Customer1 {
private String name;
private List<String> list;
private Map<String, String> map;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}
class Customer2 {
private String name;
private List<String> list;
private Map<String, String> map;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}

③ java中如何使用map存取數據

java中使用map存取數據的方法如下:

1、需要指定其中的K,V;k=keyv=value。

④ java Map復制的問題

你指的是對get出來的Set對象執行add方法嗎?
使用put方法,是將同樣的對象從popSizeChoice放到MpopSizeChoice中,兩個map是兩個不同的引用,但是裡面保存的對象還是指向同一個引用。所以調用add方法對這個同一個對象進行add的時候,兩個map里都會更新。
要解決這個辦法,map里存放的set也必須new一個新的,然後調用putAll方法得到一個拷貝。

⑤ java中怎麼樣將方法中的map內數據保存以便在下次調用時繼續使用

你可以把這個map定義為類成員,如果是通過靜態方法向map裡面加東西,那就定義為靜態成員。總之,定義為方法內的局部變數是肯定不行的,因為它的作用域是方法內,執行一次方法後,這個map變數的生命周期就到了,下次再調用的時候,是產生一個新的map。(java不像c,c++,沒有局部靜態變數)

⑥ java中map集合能不能存另兩個集合

java中map集合能放另外兩個集合,主要是使用map的putall集合,加入另一個集合,如下代碼回:

importjava.util.HashMap;
importjava.util.Map;

publicclassceshi{

答publicstaticvoidmain(String[]args){

Mapmap1=newHashMap();
map1.put("key1","values1");
Mapmap2=newHashMap();
map2.put("key2","values2");

Mapmap3=newHashMap();//將前兩個map放入map3中
map3.putAll(map1);//加入map1
map3.putAll(map2);//加入map2
System.out.println(map3);//輸出結果
}

}

運行結果如下:

⑦ java Map深度復制問題

這里的pos是基礎類型,不是引用類型,不需要拿出來單獨復制,淺clone就可以了,但是attr這個map需要進行深度復制,因為這個是引用類型,復制後的對象修改該屬性依然會影響源對象


clone方法可以簡單寫為

@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Elem elem = (Elem) super.clone();
Map<String, String> tempMap = new HashMap();
for (Entry<String, String> e : this.map.entrySet()) {
/**
* 這里的new String(e.getValue())可以直接用e.getValue()代替,
* 寫在這里僅僅是提醒當value是其他對象時需要做下處理,比如一個User對象,如果你直接寫成
* tempMap.put(e.getKey(), e.getValue());那麼肯定是沒什麼用的,而要寫成
* tempMap.put(e.getKey(), e.getValue().clone());
*/
tempMap.put(e.getKey(), new String(e.getValue()));
}
elem.map = tempMap;
return elem;
}

⑧ 有沒有類似BeanUtils.Properties實現Map和Bean之間的復制

使用Spring 的BeanWrapper來實現從map 設置到bean

T obj = (T) BeanUtils.instantiateClass(type);
BeanWrapper beanWrapper = new BeanWrapperImpl(obj);
beanWrapper.setPropertyValues(m);

反過來,可能需要自己寫
BeanWrapper beanWrapper = new BeanWrapperImpl(obj);
PropertyDescriptor[] descriptor = beanWrapper.getPropertyDescriptors();
for (int i = 0; i < descriptor.length; i++) {
m.put(descriptor[i].getName,beanWrapper.getPropertyValue(name));
}

⑨ Java中map動態賦值的問題

把建立map放在循環內,你的做法肯定是在循環外建立map了。