有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是迭代集合类的最佳方法?

伙计们,我想问一下迭代集合类的最佳方法

private ArrayList<String> no = new ArrayList<String>();
private ArrayList<String> code = new ArrayList<String>();
private ArrayList<String> name = new ArrayList<String>();
private ArrayList<String> colour = new ArrayList<String>();
private ArrayList<String> size = new ArrayList<String>();



 // method for finding specific value inside ArrayList, if match then delete that element
 void deleteSomeRows(Collection<String> column, String valueToDelete) {

        Iterator <String> iterator = column.iterator();

        do{ 
            if (iterator.next()==valueToDelete){
                           iterator.remove();     
                           }

                      }while(iterator.hasNext());   

}

deleteSomeRows(no, "value" );
deleteSomeRows(code, "value" );
deleteSomeRows(name , "value");
deleteSomeRows(colour ,"value" );
deleteSomeRows(size , "value");

上面代码的问题是,仅仅迭代这些类中的每一个就需要花费大量的时间?有什么办法可以加快速度吗?如果你在乎,请帮忙


共 (2) 个答案

  1. # 1 楼答案

    您可以简化代码:

    while column.contains(valueToDelete)
    {
        column.remove(valueToDelete);
    }
    

    您将无法加快ArrayList迭代,尤其是在列表未排序的情况下。你因这个问题而陷入困境。如果对其进行排序并插入逻辑以二进制搜索要删除的项,直到再也找不到为止,则可以加快访问速度

    下一个建议与所需时间没有直接关系,但它会给你带来问题

    永远不要使用==运算符比较字符串对象是否相等。这将导致比较它们的指针值

    改用这个:

    if (iterator.next().equals(valueToDelete))
    
  2. # 2 楼答案

    在找到要删除的元素后,尝试暂停