嗨我有List同时具有字符串和数值我需要从中检索数值。如何检索数值
public void printNumericValue(){
ArrayList<String> arrayList=new ArrayList<String>();
arrayList.add("java");
arrayList.add("1");
arrayList.add("vava");
arrayList.add("2");
arrayList.add("javadd");
arrayList.add("122");
arrayList.add("vavaja");
arrayList.add("20784");
}
答案 0 :(得分:0)
您可以使用Integer.parseInt但请记住,此方法可能会为非有效数字的字符串抛出异常,请记住您可以创建这样的方法
static List<Integer> extractInteger(List<String> input) {
List<Integer> output = new ArrayList<>();
for (String candidate : input) {
try {
output.add(Integer.parseInt(candidate));
} catch (NumberFormatException e) {
}
}
return output;
}
或者在java8中你可以做到
List<Integer> output = new ArrayList<>();
arrayList.stream().forEach(new Consumer<String>() {
@Override
public void accept(String candidate) {
try {
output.add(Integer.parseInt(candidate));
} catch (Exception e) {
}
}
});
答案 1 :(得分:0)
您可以尝试解析值。 E.g:
List<String> arrayList = // ArrayList from the OP
List<Integer> result = new ArrayList<>();
for (String s : arrayList) {
try {
result.add(Integer.parseInt(s));
} catch (NumberFormatException e) {
// A string which doesn't represent a number
}
}
答案 2 :(得分:0)
不使用try catch的解决方案
for (String string : arrayList) {
char[] cs = string.toCharArray();
boolean isnumeric = false;
for (char c : cs) {
if (c >= 'a' && c <= 'z') {
isnumeric = false;
break;
} else {
isnumeric = true;
break;
}
}
if (isnumeric) {
System.out.println(string);
}
}