I'm a beginner in Java and HBase, I want to shorten my code so I use a for-loop in my code. If the input String stumber is "AAAA0000?0", the results should be "AAAA000000","AAAA000010","AAAA000020","AAAA000030" …… "AAAA000090"
This origin code works well:
List<Get> gets = new ArrayList<>();
for (String stumber : stumbersArr) {
if(stumber.charAt(8) == '?'){
get = new Get((stumber.replace(stumber.charAt(8), '0')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '1')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '2')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '3')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '4')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '5')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '6')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '7')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '8')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '9')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
}else{
get = new Get(stumber.trim().getBytes());
get.setMaxVersions(versions);
gets.add(get);
}
}
Result[] results = table.get(gets);
But after I modify with for-loop, the code failed to give out the results. Why?
List<Get> gets = new ArrayList<>();
for (String stumber : stumbersArr) {
if(stumber.charAt(8) == '?'){
for (int i =0; i<10; i++){
get = new Get((stumber.replace(stumber.charAt(8), 'i')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
}
}else{
get = new Get(stumber.trim().getBytes());
get.setMaxVersions(versions);
gets.add(get);
}
}
Result[] results = table.get(gets);
Inside for loop should be:
get = new Get((stumber.replace(stumber.charAt(8), (char)(i + '0'))).getBytes());
what gives you i
value as a char
.