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