у меня есть
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 ключей.
Я пробовал этот способ, но он всегда дает мне все значения определенного ключа.
Есть ли способ получить подмножество значений для определенного ключа в хэш-карте?
Вот код, который я пробовал,
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]}
Может ли кто-нибудь помочь мне в этом вопросе?
Спасибо