[英]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.