繁体   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