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 пар,
FINA l после ограничения данных {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]}
Может ли кто-нибудь помочь мне в этом выпуске?
Благодаря
if startLimit = 2 и endLimit = 4 Мне нужно 2,3,4, но ваш алгоритм дает только 2,4 – Sandy
Это потому, что 'subList' исключает верхнюю границу. Если это возможно, вы должны адаптировать свой предел в диапазоне [0, размер списка]. –
@Macro Stramezzi мы не можем это сделать с помощью Object .. Я не могу это перечислить –
Sandy