2014-01-21 50 views
2

我的刪除重複數字的方法有效,但如果數字出現兩次以上,則不能。 例如用數字1,2,2,3,4,5,6,7,7,7,8,9的列表在使用該方法時給出列表1,2,3,4,5,6,7,7, 8,9-爲什麼我的removeDuplicates方法在第一次遇到它時僅刪除重複的整數?

import java.util.*; 
public class final SortAndRemove{ 
    private SortAndRemove(){ 
    } 
public static void selectionSort(List<Integer> a){ 
    if(a == null) 
     return; 
    if (a.size() == 0 || a.size() == 1) 
     return; 

    int smallest; 
    int smallestIndex; 
    for (int curIndex = 0; curIndex < a.size(); curIndex++) { 

     smallest = a.get(curIndex); 
     smallestIndex = curIndex; 

     for (int i = curIndex + 1; i < a.size(); i++) { 
      if (smallest > a.get(i)) { 

       smallest = a.get(i); 
       smallestIndex = i; 
      } 
     } 


     if (smallestIndex == curIndex); 

     else { 
      int temp = a.get(curIndex); 
      a.set(curIndex, a.get(smallestIndex)); 
      a.set(smallestIndex, temp); 
     } 

    } 
} 


public static void removeDuplicates(List<Integer> a){ 
    if(a == null) 
     return; 
    if (a.size() == 0 || a.size() == 1) 
     return; 
    for(int curIndex = 0; curIndex <a.size(); curIndex++){ 
     int num = a.get(curIndex); 
      for(int i = curIndex + 1; i < a.size(); i++){ 
       if(num == a.get(i)) 
        a.remove(i); 
      } 

    } 

} 

    } 
+3

據我所知,Utility類只是一些常用/必需的常用函數,可以在任何應用程序中使用。例子包括排序,重複數據刪除,計時,容器類等 –

+1

是啊,看起來不錯。 實用程序類基本上只是一個類,包含一些經常使用的靜態方法,以及許多可能相互關聯或可能不相關的不同事物。像System.String的靜態成員可以被認爲是一個實用程序類。 雖然你可能想聲明靜態密封類。 –

+1

這是真的意見基礎,因爲我沒有Java中的「實用類」的正式定義,我知道。我個人已經編寫了像'SortAndRemove'這樣的類,並且像這樣引用它。只有你可能添加的是一個私有的構造函數,所以它不能被實例化。 –

回答

3

維基百科states一個工具類:

是定義了一組用於執行常見的方法,經常 再使用的功能的類。大多數實用程序類在靜態(請參閱靜態變量)範圍下定義這些常用方法 。

這是很好的給你的實用類私有構造(以便它可以永遠被初始化) 即

public class SortAndRemove{ 
private SortAndRemove() { 
    throw new AssertionError(); 
} 
... // Remainder omitted 
} 

(這是有效的Java由約書亞·布洛克討論的方式)

0

這也是很好的,讓您的實用級決賽(所以沒有類可以從您的公用事業延長,因爲所有的方法都是靜態的)

public final class SortAndRemove{ 
private SortAndRemove() { 
    throw new AssertionError(); 
} 
... // Remainder omitted 
} 
相關問題