Set集合重複元素的判斷

2021-06-29 13:51:02 字數 2201 閱讀 9817

set集合比較特殊,他的方法基本上和collection介面的方法一致,並且他沒有根據索引得到對應值的get(int index)方法. 更重要的是set集合不能放置重複的元素.她是怎麼判斷的呢?那麼,我們首先要讓物件具有比較性

一,儲存的自定義物件實現介面 comparable

複寫public int compareto()方法. 返回0表示二者相等. 如果返回大於0的整數(一般寫1),則認為該物件大於比較的物件.如果返回小於0的整數(一般是-1),則認為該物件小於比較的物件.

下面我們定義乙個類person,如果物件的年齡相等,我們就認為這兩個物件相等

public

static

void

main(string args)

private

static

void

testtreeset()

system.out.println("size = "+treeset.size());

}static class person implements comparable

public string getname()

public

void

setname(string name)

public

intgetage()

public

void

setage(int age)

@override

public

inthashcode()

@override

public

boolean

equals(object obj) else

return b;

}@override

public string tostring()

@override

public

intcompareto(person o)

if (this.age > o.getage())

return -1;

}}

執行結果為:

person [name=tom, age=20]

person [name=jim, age=21]

size = 2

由此分析,在操作treeset.add(new person(「jim」, 20));的時候認為他是乙個相同的物件,那麼就無法再放入了

二,儲存的自定義物件實現介面 comparable

public

static

void

main(string args)

private

static

void

testtreeset()

if (o1.getage() > o2.getage())

return -1;

}});

treeset.add(new person("tom", 20));

treeset.add(new person("jim", 21));

treeset.add(new person("jim", 20));

iteratorit = treeset.iterator();

while (it.hasnext())

system.out.println("size = "+treeset.size());

}static class person

public string getname()

public

void

setname(string name)

public

intgetage()

public

void

setage(int age)

@override

public string tostring()

}

結果是:

person [name=tom, age=20]

person [name=jim, age=21]

size = 2

存入了兩個結果.

treeset.add(new person(「jim」, 20)); jim的年齡和tom相同被認為是一樣的物件

去除Set集合中的重複元素

去除 set 集合的重複元素的方法與 equals hashcode 方法有關 class person public class test1當你這樣輸出的時候,有可能會存在相同的元素存在 set 集合中,是因為你沒有重寫 equals hashcode 方法 class person public...

217 存在重複元素(set)

給定乙個整數陣列,判斷是否存在重複元素。如果任意一值在陣列 現至少兩次,函式返回 true 如果陣列中每個元素都不相同,則返回 false 示例 1 輸入 1,2,3,1 輸出 true 示例 2 輸入 1,2,3,4 輸出 false 示例 3 輸入 1,1,1,3,3,4,3,2,4,2 輸出 ...

判斷陣列中的重複元素

問題,有乙個n 1個元素的陣列,包含1到n的n個數,外加乙個重複元素,將這個重複元素找出。方法一 使用置換法,由於下標是從0開始,如果nums i i 1,說明元素是放在正確的位置,繼續判斷。如果nums i nums nums i 1 說明nums i 就是重複元素,是要求找到的,否則就轉換num...