关于arrayList

时间:2012-04-08 06:24:36

标签: java

我使用的是扫描仪而不是字符串标记符,下面是代码片段......

Scanner scanner =  new Scanner("Home,1;Cell,2;Work,3");
scanner.useDelimiter(";");
while (scanner.hasNext()) {
    // System.out.println(scanner.next());
    String phoneDtls = scanner.next();

    // System.out.println(phoneDtls);
    ArrayList<String> phoneTypeList = new ArrayList<String>();
    if(phoneDtls.indexOf(',')!=-1) {

        String value = phoneDtls.substring(0, phoneDtls.indexOf(','));

        phoneTypeList.add(value);

    }

    Iterator itr=phoneTypeList.iterator();
    while(itr.hasNext())
        System.out.println(itr.next());
}

我执行此操作后的输出... 家 细胞 工作

从上面的代码可以看出,在数组列表phoneTypeList中我们终于存储了值..但是在','的基础上找出值的逻辑并不是那么好......这是..

if(phoneDtls.indexOf(',')!=-1) {
    String value = phoneDtls.substring(0, phoneDtls.indexOf(','));
    phoneTypeList.add(value);
}
你可以用其他的替代方案告诉我.. !!实现同样的目标...... !!提前多多感谢.. !!

4 个答案:

答案 0 :(得分:2)

好吧,既然你问过是否还有另外一种方法可以做,那么这里有一个替代方案:你可以直接拆分字符串,用foreach语句用更少的代码完成:

String input = "Home,1;Cell,2;Work,3";

String[] splitInput = input.split(";");

for (String s : splitInput ) {

    System.out.println(s.split(",")[0]);

}

无需使用ArrayList<T>,因为您也可以遍历数组。

答案 1 :(得分:1)

你可以尝试基于','STIRNG_VALUE.split(',')进行拆分;将返回一个字符串分隔的数组,可能会有帮助

答案 2 :(得分:1)

如果我理解正确的话。问题陈述是您要维护Phone-Type-List列表。像这样:[“Home”,“Cell”,“Work”]。

我建议你将它保存在属性文件/配置文件/数据库中,它有意义,并在应用程序启动时将其加载到内存中。

如果无法更改输入,那么对于算法我无法想到更好的输入。看起来不错。

如果有意义,你可以使用字符串的split函数。 首先使用拆分“;” 然后拆分“,”

答案 3 :(得分:1)

declare the arraylist outside the while loop.

试试这个,我也做了一些改进,以获得更好的表现。希望你能比较和理解这种变化。

    ArrayList<String> phoneTypeList = new ArrayList<String>();
    Scanner scanner = new Scanner("Home,1;Cell,2;Work,3");
    scanner.useDelimiter(";");
    String phoneDtls = null;
    String value = null;
    while (scanner.hasNext()) {
        phoneDtls = scanner.next();
        if (phoneDtls.indexOf(',') != -1) {
            value = phoneDtls.split(",")[0];
            phoneTypeList.add(value);
        }
    }

    Iterator itr = phoneTypeList.iterator();
    while (itr.hasNext())
        System.out.println(itr.next());

我已经执行了n得到了结果,查看截图。

enter image description here