【问题标题】:Need to remove all nines from this array [closed]需要从这个数组中删除所有的 9 [关闭]
【发布时间】:2013-03-28 15:12:21
【问题描述】:

我需要一个从“myList”中删除所有九的方法。有什么帮助,谢谢。

public class ArrayListPractice 
{
    ArrayList <Integer> myList = new ArrayList <Integer>();
    public ArrayListPractice() 
    {
        myList.add(6);
        myList.add(2);
        myList.add(7);
        myList.add(3);
        myList.add(12);
        myList.add(1);
        myList.add(9);
        myList.add(9);
        myList.add(3);
        myList.add(5);
        myList.add(9);
    }
}

【问题讨论】:

  • O(n) 问题,因为它是一个数组。只需循环,如果值为 9,则将其删除。排序只会让事情变得更糟
  • 为什么不直接不添加它们呢?
  • 切换到基数 9 而不是十进制。这消除了 O(1) 中的所有 9。
  • for(Iterator i=list.iterator();i.hasNext();if(i.next().equals(9))i.remove(); 现在它会向后减少副本。

标签: java collections


【解决方案1】:

始终以 javadoc 开头。

final Integer nine = Integer.valueOf(9);
while (myList.remove(nine)) { }

如果列表包含该元素,remove 返回 true。

【讨论】:

    【解决方案2】:
    List<int> indexWithNine = new ArrayList<int>();
    for (int i=0; i< myList.length; i++){
      if (myList.get(i) == 9)
         indexWithNine.add(i);
    }
    for (int i=indexWithNine.length-1; i=0; i--)
    {
      myList.remove(indexWithNine.get(i));
    }
    

    【讨论】:

    • 只需使用 listIterator 并向后扫描 (previous()/hasPrevious()) 然后 remove()
    • 你说得对,这会更简单 Thx ;)
    【解决方案3】:

    试试这个。

    ArrayList list1 = new ArrayList();
    list1.add( 9 );        
    myList.removeAll( list1 );
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      试试这个:它会从你的 ArrayList myList 中删除所有出现的 9。

      myList.removeAll(Collections.singleton(9));
      

      myList before : [6, 2, 7, 3, 12, 1, 9, 9, 3, 5, 9]

      myList after: [6, 2, 7, 3, 12, 1, 3, 5]

      【讨论】:

      • 有趣,学到了一些东西。
      【解决方案5】:

      应该这样做。

      public List removeNines(List myList){
          Iterator itr = myList.iterator();
          while(itr.hasNext()){
              if(itr.next() == 9){
                   itr.remove();
              }
          }
          return myList; 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 2021-08-07
        • 2017-03-25
        • 1970-01-01
        相关资源
        最近更新 更多