簡體   English   中英

一種不使用Hashset方法而不允許在數組列表中顯示重復項的方法

[英]A way to not allow duplicates to be shown on a arraylist without using the Hashset method

因此,我必須采用兩種方法:

void setUnique( boolean value)

boolean getUnique()

setUnique允許客戶端設置是否允許重復(true表示不重復,false表示允許重復,

getUnique將返回當前設置為唯一

我的任務是我必須創建一個SortedIntList java和SortedIntListTest .java,在測試列表時必須包含這兩個方法。

這是我到目前為止所擁有的,並且我已經知道它不正確,因為它到處都有錯誤:

public void setUnique(boolean value)
{
      if(!list.contains(value))
      {
           list.add(value);
           return index == true;

      }
      else
      {

          return index == false;
      }
}

public boolean getUnique()
{
    //return value ;
}

現在,我已經看到人們使用哈希集方法。 但是,我們還沒有在課堂上學到它,因此很可能將不允許使用它。 我一直堅持這一點,真的希望以其他方式提供一些幫助,現在允許不使用hashset方法將重復項放入arraylist

首先,以上方法public void setUnique(boolean value)其返回類型為void,但您返回的是布爾值,這是錯誤的。

現在按照我的要求,將有一個布爾標志,指示客戶是否要重復值。

因此,在您的類中使用一個布爾變量“ flag”,並為該變量實現setter和getter。 客戶只要想更改,便會更改該標志。

現在創建一個返回List的方法。

public List<Integer> getList(List<Integer> inputList){
List<Integer> list=new ArrayList<Integer>();
    if(flag){
       for(Intger i:inputList){
         if(!list.contains(i)){
          list.add(i);
         }
       }
    }
   else{
     list=inputList;
   }    
return list;
}

您可以這樣編寫SortedIntList.java

public class SortedIntList {

  private boolean isUnique;
  private ArrayList<Integer> arrayList = new ArrayList<>();
  public boolean isUnique() {
    return isUnique;
  }

  public void setIsUnique(boolean isUnique) {
    this.isUnique = isUnique;
  }

  public void  addElement(int element){
    //While inserting element, it will check whether isUnique is set or not    

    if(isUnique){

    //If set, then it will check whether the list contains that element, if Yes, then skip it.
        if(arrayList.contains(element)){
          return;
        }
    }
    arrayList.add(element);

  }

  // Add your custom methods for sorting purpose 

  public List getArray(){
    return arrayList;
  }
}

和SortedIntListTest.java這樣

public class SortedIntListTest {
  public static void main(String[] args) {

    SortedIntList list = new SortedIntList();
    list.setIsUnique(true);
    list.addElement(10);
    list.addElement(5);
    list.addElement(10);
    list.addElement(8);
    System.out.println(list.getArray());
  }
}

根據輸入,這里是要填寫的模板代碼。要在數組列表中查找重復項,請使用list上的contains方法

 public class SortedIntList<Integer> extends AbstractList<Integer>{

    private List<Integer> myList = new LinkedList<Integer>

    private boolean isunique;

    public void add(int value){
    Case 1: if duplicates are allowed
    //add value to myList 
    Case 2: duplicates are not allowed
    while adding you need to traverse the list if there is any such value
    //sort the list
    }

    public void setUnique(boolean unique){
    //set isUnique
    //if value is changing from non-unique to unique
    //traverse the list if there is any duplicate values remove them
    }

    public boolean isUnique(){
      return isUnique;
    }

   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM