Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何在ArrayList中查找字符串中的字母重复字符串_Java_String_Arraylist_Duplicates - Fatal编程技术网

Java-如何在ArrayList中查找字符串中的字母重复字符串

Java-如何在ArrayList中查找字符串中的字母重复字符串,java,string,arraylist,duplicates,Java,String,Arraylist,Duplicates,我对一些任务有问题。我必须找到包含字母“r”的单词并复制这些单词。我尝试使用for循环执行此操作: for(int i = 0; i < list.size(); i++){ if(list.get(i).contains("r")){ list.add(list.get(i)); } for(int i=0;iresult.add(a)); 您可以创建原始列表的副本,并向其中添加元素。这样,您正在迭代的列表不会改变大小 例如: List<String&g

我对一些任务有问题。我必须找到包含字母“r”的单词并复制这些单词。我尝试使用for循环执行此操作:

for(int i = 0; i < list.size(); i++){
if(list.get(i).contains("r")){
            list.add(list.get(i));
 }
for(int i=0;i
但它根本不起作用。当我向数组中添加新元素时,它会使数组变大吗?然后list.size会发生变化,循环无法到达数组的最后一个元素?同时,重复的单词应该紧跟在原始单词之后,例如输入:

展示 内存 猫

输出:

展示 内存 内存 猫

真的,我不知道如何复制它

这也不起作用:

for(int i = 0; i < list.size(); i++){
if(list.get(i).contains("r")){
            list.add(i+1, list.get(i));
}
for(int i=0;i
为包含字母
r
的元素添加副本后,您最终将移动到该副本,因为它也包含
r
,您将为其添加副本,然后在访问另一个副本后,您将为其添加另一个副本,依此类推……无限,这样循环将不会结束(直到内存耗尽为止)

为了避免这种情况,在复制元素之后,您需要跳转到复制之后的下一个元素。您可以通过在复制之后额外递增
i
来完成

list.add(i+1, list.get(i));
i++;


在为包含字母
r
的元素添加副本后,您最终将移动到该副本,因为它也包含
r
,您将为其添加副本,然后在访问另一个副本后,您将为其添加另一个副本,依此类推……无限地这样循环将不会结束(直到内存耗尽为止)

为了避免这种情况,在复制元素之后,您需要跳转到复制之后的下一个元素。您可以通过在复制之后额外递增
i
来完成

list.add(i+1, list.get(i));
i++;


您可以创建原始
列表的副本
并向其中添加元素。这样,您正在迭代的列表不会改变大小

例如:

List<String> list = Arrays.asList("show", "ram", "cat");
List<String> result = new ArrayList<>(list);
list.stream().filter(a -> a.contains("r")).forEach(a -> result.add(a));
List List=Arrays.asList(“show”、“ram”、“cat”);
列表结果=新的ArrayList(列表);
list.stream().filter(a->a.contains(“r”)).forEach(a->result.add(a));

您可以创建原始
列表的副本,并向其中添加元素。这样,您正在迭代的列表不会改变大小

例如:

List<String> list = Arrays.asList("show", "ram", "cat");
List<String> result = new ArrayList<>(list);
list.stream().filter(a -> a.contains("r")).forEach(a -> result.add(a));
List List=Arrays.asList(“show”、“ram”、“cat”);
列表结果=新的ArrayList(列表);
list.stream().filter(a->a.contains(“r”)).forEach(a->result.add(a));

保持简单,只需使用另一个
列表即可

publicstaticvoidmain(字符串[]args){
列表输入=Arrays.asList(“show”、“ram”、“cat”);
列表结果=新建ArrayList();
for(字符串s:输入){
如果(s!=null&&s.contains(“r”)){
结果。添加(s);
}
结果。添加(s);
}
系统输出打印项次(结果);
}

将打印您想要的内容。希望有帮助!

保持简单,只需使用另一个
列表即可

publicstaticvoidmain(字符串[]args){
列表输入=Arrays.asList(“show”、“ram”、“cat”);
列表结果=新建ArrayList();
for(字符串s:输入){
如果(s!=null&&s.contains(“r”)){
结果。添加(s);
}
结果。添加(s);
}
系统输出打印项次(结果);
}

将打印您想要的内容。希望有帮助!

根据列表的类型,这可以通过
ListIterator
轻松实现,它有一个
add
方法,可以在当前元素之后添加一个元素,但不会对其进行迭代

List<String> list = new ArrayList<>( Arrays.asList( "show", "ram", "cat" ) );

ListIterator<String> iterator = list.listIterator();
while ( iterator.hasNext() ) {
    String value = iterator.next();
    if ( value.contains("r") ) {
        iterator.add(value);
    }
}

System.out.println( list );
List List=newarraylist(Arrays.asList(“show”、“ram”、“cat”);
ListIterator迭代器=list.ListIterator();
while(iterator.hasNext()){
字符串值=迭代器.next();
if(值包含(“r”)){
迭代器。添加(值);
}
}
系统输出打印项次(列表);
此操作的输出为:

[show, ram, ram, cat] [秀,羊,羊,猫]
这将适用于
ArrayList
LinkedList
,但不适用于直接来自
Arrays.asList
的特定
列表,因为它是不可修改的。

根据列表的类型,这可以通过
列表迭代器
轻松实现,该迭代器具有dds将一个元素精确地放在当前元素之后,但不迭代它

List<String> list = new ArrayList<>( Arrays.asList( "show", "ram", "cat" ) );

ListIterator<String> iterator = list.listIterator();
while ( iterator.hasNext() ) {
    String value = iterator.next();
    if ( value.contains("r") ) {
        iterator.add(value);
    }
}

System.out.println( list );
List List=newarraylist(Arrays.asList(“show”、“ram”、“cat”);
ListIterator迭代器=list.ListIterator();
while(iterator.hasNext()){
字符串值=迭代器.next();
if(值包含(“r”)){
迭代器。添加(值);
}
}
系统输出打印项次(列表);
此操作的输出为:

[show, ram, ram, cat] [秀,羊,羊,猫]
这将适用于
ArrayList
LinkedList
,但不适用于直接来自
Arrays.asList
的特定
列表,因为它是不可修改的。

您需要找到包含字母
r
的单词,然后将找到的所有单词添加到列表中:

    List<String> list = Arrays.asList("black", "red", "blue");
    List<String> result = list.stream()
        .filter(i->i.contains("r"))
        .collect(Collectors.toList());

    list.addAll(result);
List List=Arrays.asList(“黑色”、“红色”、“蓝色”);
列表结果=List.stream()
.filter(i->i.contains(“r”))
.collect(Collectors.toList());
list.addAll(结果);

您需要找到包含字母
r
的单词,然后将找到的所有单词添加到列表中:

    List<String> list = Arrays.asList("black", "red", "blue");
    List<String> result = list.stream()
        .filter(i->i.contains("r"))
        .collect(Collectors.toList());

    list.addAll(result);
List List=Arrays.asList(“黑色”、“红色”、“蓝色”);
列表结果=List.stream()
.filter(i->i.contains(“r”))
.collect(Collectors.toList());
list.addAll(结果);

你为什么不创建一个重复的ArrayList?嗯,我不知道我能做到:D我认为我必须更改现有的ArrayList。谢谢。你为什么不创建一个重复的ArrayList?嗯,我不知道我能做到:D我认为我必须更改现有的ArrayList。谢谢。天啊,太简单了:D非常感谢!天啊,太简单了:D非常感谢!