需要解释这个java代码块吗

需要解释这个java代码块吗,java,string,collections,Java,String,Collections,最近有机会了解了java新生的招聘流程。 遗憾的是,由于这个项目,没有人进入第二轮。所以,作为一个爱好者,我请我的一位朋友给我一个解决方案,这样就可以了,但由于我对java还不熟悉,而且还没有接触到集合框架,所以我对它不太了解。 所以我们可以解释这个逻辑或代码 问题是在不使用字符串类方法的情况下从字符串中删除重复项 public class Test { public static void main(String[] args) { // TODO Auto-gene

最近有机会了解了java新生的招聘流程。 遗憾的是,由于这个项目,没有人进入第二轮。所以,作为一个爱好者,我请我的一位朋友给我一个解决方案,这样就可以了,但由于我对java还不熟悉,而且还没有接触到集合框架,所以我对它不太了解。 所以我们可以解释这个逻辑或代码

问题是在不使用字符串类方法的情况下从字符串中删除重复项

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String str="this is java this is cpp";

        List<String> l=new LinkedList<String>();
        int i=0,j;
        for(i=0,j=str.indexOf(' ');j!=-1;i=j,j=str.indexOf(' ', i+1))
        {
            String s=str.substring(i,j).trim();
            l.add(s);
        }
        String s=str.substring(i+1,str.length()).trim();
        l.add(s);

        Iterator<String> it=l.iterator();
        List<String> list=new LinkedList<String>();
        while(it.hasNext())
        {
            String s1=it.next();
            if(!list.contains(s1)){
                list.add(s1);
            }else
            {
                list.remove(s1);
            }
        }
        System.out.println(list);
    }

}
公共类测试{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
String str=“这是java,这是cpp”;
列表l=新的LinkedList();
int i=0,j;
对于(i=0,j=str.indexOf(“”);j!=-1;i=j,j=str.indexOf(“”,i+1))
{
字符串s=str.substring(i,j).trim();
l、 添加(s);
}
字符串s=str.substring(i+1,str.length()).trim();
l、 添加(s);
迭代器it=l.Iterator();
列表=新建LinkedList();
while(it.hasNext())
{
字符串s1=it.next();
如果(!list.contains(s1)){
列表。添加(s1);
}否则
{
列表。删除(s1);
}
}
系统输出打印项次(列表);
}
}
在for循环中,我正在检查字符串的索引,但是j是关于什么的呢?
现在我知道只有
(i=0;i您需要在
while
循环中修改最终
中的逻辑。
if
语句是正确的,但是如果遇到重复的,则不应该删除列表中已经存在的逻辑

 Iterator<String> it = l.iterator();
 List<String> list = new LinkedList<String>();
 while (it.hasNext()) {
     String s1 = it.next();
     if (!list.contains(s1)) {
         list.add(s1);
    }
 }
Iterator it=l.Iterator();
列表=新建LinkedList();
while(it.hasNext()){
字符串s1=it.next();
如果(!list.contains(s1)){
列表。添加(s1);
}
}

for
循环中,您可以针对特定事项使用3个部分:

for ( /* part1 */ ; /* part2 */ ; /* part3 */ )
首先,这三个部分都是必须的,如果你为(;;)
,你可能需要一个无限循环,尽管你无论如何都需要
中断

在第1部分中,您可以启动任意数量的变量,用

for(int i=0, int j=-10, int k=0 ; ... ; ...)
在第2部分中,您可以检查任意数量的条件以完成循环

for( .... ; i<=j, j>10, i<500 ; ...)
考虑到所有这些,您的代码正在尝试拆分子字符串,并显示来自主字符串
str
的不同单词集合

怎么做?

j = str.indexOf(' ', i+1)

它会找到主字符串的下一个空格
'
部分,并尝试将子字符串从当前索引拉到下一个空格。需要更多说明吗?

这是一个非常标准的(如果人为设计的话)字符串处理函数…如果熟悉字符串处理,编写起来应该不会太困难。(例如,试着自己编写一个字符串反转函数作为练习。)是的,先生,我正在练习编程技巧,学习coderbyte,codingbat程序:)@TimBiegeleisen..这不是我的代码..我是java新手..我没有写过这段代码在我看来很难看。。。
j = str.indexOf(' ', i+1)