java - 如何将重复值添加到ArrayList中?

标签 java arraylist

我必须编辑字符串列表:

  1. 如果包含“h”字母,则删除该值;
  2. 如果包含“h”和“o”,则不执行任何操作
  3. 如果值包含字母“o”,则将其重复添加到列表中。

我坚持了制作副本的步骤。 怎么了?为什么会发生?

这是代码:

public class MyClass {
    public static void main(String[] args) throws Exception {
        ArrayList<String> list = new ArrayList<String>();
        list.add("hi");      // this one have to be removed
        list.add("hello");   // this one have to be left without changes
        list.add("ops");     // duplicate must be added to the list
        list = fix(list);

        for (String s : list) {
            System.out.println(s);
        }
    }

    public static ArrayList<String> fix(ArrayList<String> list) {

        for (int i = 0; i < list.size(); i++) {

            if (list.get(i).contains("h") && list.get(i).contains("o")) ;
                // do nothing

            else if (list.get(i).contains("h"))
                list.remove(i);

            else if (list.get(i).contains("o")) {
                // The problem is here ===>
                list.add(i + 1, list.get(i));

            }
        }

        return list;
    }

}

我也尝试过:

String s = new String(list.get(i));
list.add(i+1, s);

最佳答案

您正在添加一个元素,并且您正在再次检查它并再次添加一个元素。这会造成无限循环。这将解决你的问题。将检查索引向前移动以防止这种无限循环

else if (list.get(i).contains("h"))
{
  list.remove(i);
  i--;
}
else if (list.get(i).contains("o"))
{
  list.add(i+1, list.get(i));
  i++;
}

此外,删除元素时需要减小 i

关于java - 如何将重复值添加到ArrayList中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27482528/

相关文章:

java - Jenkins 在向源代码管理提供存储库 URL 时出错

java - 将数据从 MySQL 传递到另一个 Activity 中的选取框 TextView

java - 如何映射一个仅供 HQL 使用的属性(在 Hibernate 中)?

java - 测试cucumber时出现错误NoSuchMethodError

java - 使用循环从字符串中删除空格

android - 在 Android Activity 中覆盖 ArrayList.equals

android - RecyclerView 未显示列表,但数据正在馈送到适配器

Java-同步列表

java for 每个循环都期望对象作为类型,同时它包含一个整数数组

java - 对象 ArrayList 反序列化后丢失 String 值?