从java </string>中的List <string>中检索数值

时间:2014-12-13 15:28:34

标签: java

嗨我有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");


}

3 个答案:

答案 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);
        }

    }