【发布时间】:2016-03-18 09:46:54
【问题描述】:
我有一个
HashMap<String, Object> initialMap = new HashMap<String, Object>();
我以这种方式为键设置了字符串值,
error=[e1, e2, e3, e4, e5, e6],[e7, e8, e9, e10, e11, e12],[e13, e14 ,e15, e16, e17, e18],[e19, e20, e21, e22, e23, e24],[e25, e26, e27, e28, e29, e30], status=[s1, s2, s3, s4, s5, s6],[s7, s8 s9, s10, s11, s12],[s13, s14 ,s15, s16, s17, s18],[s19, s20, s21, s22, s23, s24],[s25, s26, s27, s28, s29, s30], data=[[d1, d2, d3, d4, d5, d6],[d7, d8, d9, d10, d11, d12],[d13, d14 ,d15, d16, d17, d18],[d19, d20, d21, d22, d23, d24],[d25, d26, d27, d28, d29, d30]], warning=[w1, w2, w3, w4, w5, w6],[w7, w8, w9, w10, w11, w12],[w13, w14 ,w15, w16, w17, w18],[w19, w20, w21, w22, w23, w24],[w25, w26, w27, w28, w29, w30]}
所以,这里有一个称为错误的键,
我们在下面有这 5 组字符串值。
[e1, e2, e3, e4, e5, e6],[e7, e8, e9, e10, e11, e12],[e13, e14 ,e15, e16, e17, e18],[e19, e20, e21, e22, e23, e24],[e25, e26, e27, e28, e29, e30].
我不需要一个键的所有这 5 个设置值,但我需要使用开始和结束限制,即每个键的值的子集。
假设我的 startLimit=2 和 endLimit=4 那么我应该只得到 2,3,4 组关键错误值,
[e7, e8, e9, e10, e11, e12],[e13, e14 ,e15, e16, e17, e18],[e19, e20, e21, e22, e23, e24]
同样需要为所有其他 3 个键重复。
我尝试过这种方式,但它总是给我一个特定键的所有值。
有什么方法可以获取 hashmap 中特定键的值子集?
这是我试过的代码,
public class MapTest {
HashMap<String, Object> finalMap = new HashMap<String, Object>();
int startLimit = 2;
int endLimit = 4;
public static void main(String[] args) {
MapTest mm = new MapTest();
mm.getData();
}
public void getData()
{
HashMap<String, Object> initialMap = new HashMap<String, Object>();
initialMap.put("status","[s1, s2, s3, s4, s5, s6],[s7, s8 s9, s10, s11, s12],[s13, s14 ,s15, s16, s17, s18],[s19, s20, s21, s22, s23, s24],[s25, s26, s27, s28, s29, s30]");
initialMap.put("data","[[d1, d2, d3, d4, d5, d6],[d7, d8, d9, d10, d11, d12],[d13, d14 ,d15, d16, d17, d18],[d19, d20, d21, d22, d23, d24],[d25, d26, d27, d28, d29, d30]]");
initialMap.put("warning","[w1, w2, w3, w4, w5, w6],[w7, w8, w9, w10, w11, w12],[w13, w14 ,w15, w16, w17, w18],[w19, w20, w21, w22, w23, w24],[w25, w26, w27, w28, w29, w30]");
initialMap.put("error","[e1, e2, e3, e4, e5, e6],[e7, e8, e9, e10, e11, e12],[e13, e14 ,e15, e16, e17, e18],[e19, e20, e21, e22, e23, e24],[e25, e26, e27, e28, e29, e30]");
Set<Entry<String, Object>> entries = initialMap .entrySet();
for (Iterator<Entry<String, Object>> i = entries.iterator(); i.hasNext(); ) {
Entry e = (Entry) i.next();
if(e.getKey().equals("error"))
{
Object errValue = initialMap.get(e.getKey());
//System.out.println("errValue" + errValue);
finalMap.put(e.getKey().toString(), errValue);
}
if(e.getKey().equals("data"))
{
Object errValue = initialMap.get(e.getKey());
//System.out.println("errValue" + errValue);
finalMap.put(e.getKey().toString(), errValue);
}
else if(e.getKey().equals("warning"))
{
Object errValue = initialMap.get(e.getKey());
//System.out.println("errValue" + errValue);
finalMap.put(e.getKey().toString(), errValue);
}
if(e.getKey().equals("status"))
{
Object errValue = initialMap.get(e.getKey());
//System.out.println("errValue" + errValue);
finalMap.put(e.getKey().toString(), errValue);
}
}
if(startLimit == 2 && endLimit == 4)
System.out.println("final map after limiting the data " + finalMap);
}
}
我从上面的程序中以这种方式获取一个键的所有 5 对值,
限制数据后的最终地图
{error=[e1, e2, e3, e4, e5, e6],[e7, e8, e9, e10, e11, e12],[e13, e14 ,e15, e16, e17, e18],[e19, e20, e21, e22, e23, e24],[e25, e26, e27, e28, e29, e30], status=[s1, s2, s3, s4, s5, s6],[s7, s8 s9, s10, s11, s12],[s13, s14 ,s15, s16, s17, s18],[s19, s20, s21, s22, s23, s24],[s25, s26, s27, s28, s29, s30], data=[[d1, d2, d3, d4, d5, d6],[d7, d8, d9, d10, d11, d12],[d13, d14 ,d15, d16, d17, d18],[d19, d20, d21, d22, d23, d24],[d25, d26, d27, d28, d29, d30]], warning=[w1, w2, w3, w4, w5, w6],[w7, w8, w9, w10, w11, w12],[w13, w14 ,w15, w16, w17, w18],[w19, w20, w21, w22, w23, w24],[w25, w26, w27, w28, w29, w30]}
但是我需要这样做,因为我的限制是 2 到 4 对,
限制数据后的最终图{error=[e7, e8, e9, e10, e11, e12],[e13, e14 ,e15, e16, e17, e18],[e19, e20, e21, e22, e23, e24], status=[s7, s8 s9, s10, s11, s12],[s13, s14 ,s15, s16, s17, s18],[s19, s20, s21, s22, s23, s24], data=[[d7, d8, d9, d10, d11, d12],[d13, d14 ,d15, d16, d17, d18],[d19, d20, d21, d22, d23, d24]], warning=[w7, w8, w9, w10, w11, w12],[w13, w14 ,w15, w16, w17, w18],[w19, w20, w21, w22, w23, w24]}
谁能帮我解决这个问题?
谢谢
【问题讨论】:
标签: java loops hashmap concurrenthashmap linkedhashmap