Java 关于arrayList

Java 关于arrayList,java,Java,我使用了scanner而不是字符串标记器,下面是一段代码 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(p

我使用了scanner而不是字符串标记器,下面是一段代码

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());
}

你能告诉我其他的选择吗。。!!实现同样的目标。。。!!提前多谢了

能否尝试根据“,”STIRNG_值进行拆分。拆分(“,”);将返回一个以分隔的字符串的数组,这可能会有所帮助。

您是否可以尝试基于“,”STIRNG_VALUE.split(“,”)进行拆分;将返回一个以分隔的字符串数组,如果我理解正确,这可能会有所帮助。问题是您想要维护一个电话类型列表。像这样:[“家”、“牢房”、“工作”]

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

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

如果有意义的话,可以使用string的split函数。 第一次使用“在上拆分”
然后在“,”上拆分,如果我理解正确的话。问题是您想要维护一个电话类型列表。像这样:[“家”、“牢房”、“工作”]

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

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

如果有意义的话,可以使用string的split函数。 第一次使用“在上拆分” 然后在“,”上拆分

试试这个,我也做了一些改变以提高性能。希望你能比较和理解这些变化

    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());
ArrayList phoneTypeList=新建ArrayList();
扫描仪=新扫描仪(“家庭,1;单元,2;工作,3”);
scanner.useDelimiter(“;”);
字符串phoneDtls=null;
字符串值=null;
while(scanner.hasNext()){
phoneDtls=scanner.next();
if(phoneDtls.indexOf(',')!=-1){
value=phoneDtls.split(“,”[0];
电话类型列表。添加(值);
}
}
迭代器itr=phoneTypeList.Iterator();
while(itr.hasNext())
System.out.println(itr.next());
我已经执行了n得到结果,检查屏幕截图

试试这个,我也做了一些改变以提高性能。希望你能比较和理解这些变化

    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());
ArrayList phoneTypeList=新建ArrayList();
扫描仪=新扫描仪(“家庭,1;单元,2;工作,3”);
scanner.useDelimiter(“;”);
字符串phoneDtls=null;
字符串值=null;
while(scanner.hasNext()){
phoneDtls=scanner.next();
if(phoneDtls.indexOf(',')!=-1){
value=phoneDtls.split(“,”[0];
电话类型列表。添加(值);
}
}
迭代器itr=phoneTypeList.Iterator();
while(itr.hasNext())
System.out.println(itr.next());
我已经执行了n得到结果,检查屏幕截图


既然您询问是否有其他方法可以执行此操作,那么这里有一个替代方法:您可以直接拆分字符串,并使用更少的语句代码执行此操作:

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

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

for (String s : splitInput ) {

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

}

无需使用
ArrayList
,因为您也可以迭代数组。

好吧,既然您询问是否有其他方法可以执行此操作,那么这里有一个替代方法:您可以直接拆分字符串,并使用语句使用较少的代码执行此操作:

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

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

for (String s : splitInput ) {

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

}

无需使用
ArrayList
,因为你也可以迭代数组。

只要你在这里只是为了让其他人修复你的代码,也许你可以开始投票/接受答案。@PaulBellora这个家伙只有4个代表,他不能投票,当我第一次加入这个网站时,我不知道接受是件事。“我们不要吝啬了。”卢卡斯——看看过去12个小时里发生的事情。尽管如此,这是一个如此成功地保持伟大的人,只是说。只要你在这里只是为了让其他人修改你的代码,也许你可以开始投票/接受答案。@PaulBellora这个家伙只有4个代表,他不能投票,当我第一次加入这个网站时,我不知道接受是一件事。“我们不要吝啬了。”卢卡斯——看看过去12个小时里发生的事情。尽管如此,这是一个如此成功地保持良好状态的方法。哦,我认为输入是动态的n您正在使用Scanner从某处读取值。
Scanner
如果您有一个
InputStream
并且您需要进行一些正则表达式组匹配,则非常有用。但是,如果所有操作都是字符串操作(例如拆分字符串),那么使用字符串操作函数(例如
string.split(…)会更容易
在这种情况下。哦,我认为输入是动态的n您正在使用Scanner从某处读取值。
Scanner
在您有
InputStream
并且需要进行正则表达式组匹配时非常有用。但是,如果所有的操作都是字符串操作(例如拆分字符串),那么在本例中,使用字符串操作函数(例如
string.split(…)
)会更容易。嗨,Rajkumar,thnanks很多。。!!很好的解释,你能解释一下这句话吗。。。value=phoneDtls.split(“,”[0],据我所知,它是在(“,”)的基础上进一步分裂的,但是[0]在这里做的是。。!!谢谢。。!!split方法返回一个数组,在这里它将包含2个元素。“[0]”将采用第一个元素。。如果你需要更多的解释,请告诉我。嗨,Rajkumar,太多了。。!!很好的解释,你能解释一下这句话吗。。。value=phoneDtls.split(“,”[0],据我所知,它是在(“,”)的基础上进一步分裂的,但是[0]在这里做的是。。!!谢谢。。!!split方法返回一个数组,在这里它将包含2个元素。“[0]”将采用第一个元素。。如果你需要更多的解释,请告诉我。