日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > Java > 正文

java list去重操作實現方式

2019-11-26 16:16:39
字體:
來源:轉載
供稿:網友
Java中的List是可以包含重復元素的(hash code 和equals),那么對List進行去重操作有兩種方式實現:
方案一:可以通過HashSet來實現,代碼如下:
復制代碼 代碼如下:

class Student {
private String id;
private String name;
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Student other = (Student) obj;
if (id == null) {
if (other.id != null) {
return false;
}
} else if (!id.equals(other.id)) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}
}

必須實現hashCode和equals兩個方法,一會我們會看為啥必須實現
具體的操作代碼如下:
復制代碼 代碼如下:

private static void removeListDuplicateObject() {
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 10; i++) {
Student student = new Student("id", "name");
list.add(student);
}
System.out.println(Arrays.toString(list.toArray()));
Set<Student> set = new HashSet<Student>();
set.addAll(list);
System.out.println(Arrays.toString(set.toArray()));
list.removeAll(list);
set.removeAll(set);
System.out.println(Arrays.toString(list.toArray()));
System.out.println(Arrays.toString(set.toArray()));
}

調用代碼:
復制代碼 代碼如下:

public static void main(String[] args) {
removeListDuplicateObject();
}

利用HashSet進行去重操作,為啥必須覆蓋hashCode和equals兩個方法呢?
我們查看HashSet的add操作源碼如下:
復制代碼 代碼如下:

public boolean add(E e) {
return map.put(e, PRESENT)==null;
}

調用了HashMap進行操作的,我們看HashMap的put操作:
復制代碼 代碼如下:

public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(hash, key, value, i);
return null;
}

需要注意的是:
復制代碼 代碼如下:

if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
......
}

也就是說hash code相等且equals(==)。
復雜度:一邊遍歷即可,O(n)
方案二:直接遍歷一遍List進行通過contains和add操作實現
代碼如下:
復制代碼 代碼如下:

private static void removeListDuplicateObjectByList() {
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 10; i++) {
Student student = new Student("id", "name");
list.add(student);
}
System.out.println(Arrays.toString(list.toArray()));
List<Student> listUniq = new ArrayList<Student>();
for (Student student : list) {
if (!listUniq.contains(student)) {
listUniq.add(student);
}
}
System.out.println(Arrays.toString(listUniq.toArray()));
list.removeAll(list);
listUniq.removeAll(listUniq);
System.out.println(Arrays.toString(list.toArray()));
System.out.println(Arrays.toString(listUniq.toArray()));
}

其他等同上面。
復雜度:
一邊遍歷,同時調用了contains方法,我們查看源碼如下:
復制代碼 代碼如下:

public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}

可以看到又對新的list做了一次遍歷操作。也就是1+2+....+n這樣復雜度為O(n*n)
結論:
方案一效率高,即采用HashSet的方式進行去重操作
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
成人xxxx| 欧美啪啪一区| 国产高清一级片| 国产 日韩 欧美 综合 一区| 日韩国产欧美三级| 不卡在线一区二区| 日韩高清不卡一区| 日韩精品在线免费观看| 国产在线不卡一区| 日韩免费精品视频| 成人h视频在线观看| www.av中文字幕| 精品久久久91| 国产日韩电影| 国产偷国产偷亚洲清高网站| 午夜私人影院在线观看| 国产一区成人| 99在线国产| 粉嫩喷白浆久久| 国产成免费视频| 91九色在线看| 欧美三级中文字幕| а√天堂中文在线资源8| 国产一二三视频| 精品国产欧美| 91极品视频在线观看| 国产在线精品日韩| 91精品国产自产在线观看永久∴ | 一本久久a久久精品亚洲| 精品999在线| 国产欧美日韩在线看| 自拍日韩亚洲一区在线| 日韩欧美在线网址| 一区二区三区在线播放视频| 高清在线一区| 91精品久久久久久久久久入口| 国产免费久久| 中文字幕视频在线免费欧美日韩综合在线看 | 欧美一级二级三级区| 久久夜色精品国产欧美乱极品 | 91精品在线观| 日韩高清不卡| 99精品免费观看| 欧美日韩在线不卡| 亚洲综合在线小说| 中文字幕精品一区二| 国产欧美日韩精品高清二区综合区| 亚洲专区一二三| 日韩欧美综合| 中文字幕高清在线播放| 日韩欧美在线影院| 日韩国产专区| 国产中文伊人| 日本不卡免费高清视频| 首页国产欧美久久| 中文字幕在线视频网| 黄色视屏免费在线观看| 国产不卡视频在线| 深夜福利一区二区| 欧美日韩国产综合视频在线观看| 日韩精品资源二区在线| 国产亚洲人成a一在线v站| 在线看的av| 中文字幕在线观看精品| 久久视频一区| 一区精品在线播放| 91精品在线视频观看| 国产对白在线| 视频一区中文字幕国产| 激情综合色综合久久| 一区二区不卡在线播放| 日韩精品在线看| 精品色蜜蜜精品视频在线观看 | 红桃视频国产一区| 日韩精品免费观看视频| 中文亚洲欧美| 国产亚洲短视频| 91精品免费看| 不卡一二三区| 一区二区三区在线免费 | 国产激情99| 玖玖在线免费视频| 色一区在线观看| 国产95在线|亚洲| 欧美黄页在线免费观看| 91精品国产91| 欧美日韩国产观看视频| 欧美日韩高清一区二区| 国产黄色高清在线| 午夜视频在线观看一区| 日韩在线观看视频一区| 国产欧美日韩最新| 国产传媒久久久| 国产最新在线| www.av中文字幕| 欧美日韩免费精品| 欧美日韩国产亚洲一区| 久久视频免费看| 国产成人综合精品| 最近中文字幕在线中文视频| 日本亚洲欧美天堂免费| 国产日韩精品视频| 中文字幕精品亚洲| 91精品国产91久久久久青草| 日韩你懂的电影在线观看| 国产字幕在线看| 亚洲福利在线看| 91久久中文| 九七久久人人| 日本精品在线播放| 一区视频在线播放| 一区二区91| 欧美日韩中文另类| 免费国产h视频在线观看86| 欧美三级中文字幕| 日韩欧美在线视频日韩欧美在线视频| 久久久久久久久综合| 欧美日韩午夜精品| 中文字幕 日韩 欧美| 国产黄在线观看免费观看不卡| 天堂在线视频中文网| 91精品视频在线| 欧美日韩综合不卡| 欧美中文字幕在线观看视频| wwwav91com| 99久久www免费| 久久99久久久欧美国产| 国产福利一区二区在线精品| 午夜av一区二区| 青青国产91久久久久久| 国产日产一区二区三区| 国产在线日韩欧美| 国产美女主播视频一区| a视频免费在线观看| 刘玥91精选国产在线观看| 欧美日韩成人一区| 欧美日韩尤物久久| 国产日韩中文字幕| 一区三区二区视频| 精品国产欧美日韩| 日韩精品手机在线| 久久99精品久久久久子伦| 国产一级一片免费播放| 国产不卡一区| 中文字幕一区免费| 日韩国产91| 亚洲最新免费视频| 中文欧美字幕免费| 亚洲乱码视频| 麻豆精品99| 国产黄在线播放| 国产亚洲人成a一在线v站| 精品日韩av一区二区| 国产99对白在线播放| 日韩欧美亚洲视频| 国产在线观看精品| 精品网站999www| 亚洲乱码中文字幕| 91精品国产乱码久久蜜臀| 亚洲深夜福利| 精品不卡一区二区| 在线欧美日韩国产| 人人做人人澡人人爽欧美| 国产精品一区二区三区免费观看| 在线观看区一区二| 欧美一级久久久久久久久大| 国产在线导航| 国产乱码在线观看| 深夜福利亚洲| 欧美日韩高清在线| 日本国产一区| 欧美中文字幕在线| 69堂精品视频在线播放| 国产免费一级| 1区2区在线| 亚洲欧美99| 国内精品99| 日韩免费视频一区二区视频在线观看| 日本a口亚洲| 精品视频三区| 国产亚洲污的网站| 国产欧美久久久精品免费| 欧美亚洲国产激情| 日韩国产一区| 91精品国产91久久久久| 欧美三级三级三级爽爽爽| 欧美日韩国产91| 日韩色在线观看| 亚洲大胆人体av| 亚洲欧洲日产国码av系列天堂| 国产在线视频不卡| 欧美日韩综合视频| www.日韩免费| 国产视频aaa| 国产欧美在线观看| 日本精品二区| 欧美乱大交xxxxx免费| 亚洲а∨精品天堂在线| 免费国产h视频在线观看86| 中文字幕在线播出| 国产无遮挡在线视频免费观看| 精品不卡一区二区| 久久久水蜜桃| 日韩中文字幕观看| 91精品婷婷国产综合久久| 97国产视频| 亚洲电影中文字幕在线观看| 亚洲丝袜一区| 国产亚洲人成a一在线v站| 精产国产伦理一二三区| 精品精品久久| 欧美日韩国产免费观看视频| 欧美三级在线视频| 日韩久久精品视频| 日韩在线视频观看正片免费网站| 三级精品视频| 国产在线不卡一区| 五月天久久比比资源色| 欧美日韩精品中文字幕| 日韩欧美中文免费| 亚洲欧洲综合另类| 一区二区精品| 欧美日韩国产免费观看视频| 亚洲福利一区| 欧美在线视频一区二区| 国产在线拍揄自揄拍| 国产超级va在线视频| 欧美日韩精品综合在线| 精品一二三区视频| 国产欧美高清在线| 午夜国产欧美理论在线播放| 国产成人综合av| www.老鸭窝.com| 亚洲一区精品电影| 色综合婷婷久久| 一区二区三区高清在线| 日韩欧美国产一二三区| 精品久久久精品| 国产午夜精品久久| 日韩中文欧美在线| 精品网站999| 亚洲欧美久久久| 日本精品在线播放| a天堂中文在线官网在线| 一级特黄大欧美久久久| 日韩中文字幕视频在线观看| 欧美日韩在线观看成人| 日韩欧美999| 欧美,日韩,国产在线| 国产最顶级的黄色片在线免费观看| 日韩欧美视频一区二区三区四区| 一区二区视频国产| 中文字幕一区二区三区精品| 麻豆精品视频入口| 日韩视频在线一区二区| 欧美一级日韩一级| 在线视频一区二区三区在线播放| 久久av免费| 91麻豆免费视频网站| 日韩中文字幕| 日韩欧美国产片| 一区二区三区高清在线| 久久精品电影| 日韩欧美99| 精品成人久久久| 另类专区欧美| 欧美另类久久久品| 日韩免费视频| 久久久久久欧美| 在线国产一级| 久久久精品福利| 中文字幕亚洲区| 免费视频中文字幕| 91精品在线免费观看| 1区2区3区在线视频| 91精品国产欧美日韩| 91精品国产乱码久久蜜臀| 国产一级免费| 99精品999| 91精品国产色综合久久不卡蜜臀| 午夜亚洲一区| 日韩视频精品在线观看| 国产一级一片免费播放| 亚洲经典中文字幕| 一区二区91| 欧美xxxx中国| 在线中文免费视频| aa国产成人| 不卡专区在线| 日韩欧美在线精品| 激情婷婷亚洲| 欧美1234区| 欧美日本精品在线| 一区二区三区精品在线| 99亚洲视频| 国产高清一区| 国产永久在线观看| 中文字幕第一页在线播放| 亚洲一区不卡在线| 日韩精品久久久| 日韩黄色在线播放| 欧美 日韩 综合| 黄色在线资源| 精品国内自产拍在线视频| 国产三级做爰在线观看| 国产免费一级| 日韩在线高清| 麻豆一区二区99久久久久| 日本a口亚洲| 婷婷中文字幕一区三区| 亚洲精品中文字幕乱码三区| 欧美日韩人人澡狠狠躁视频| 日韩精品视频在线播放| 国产欧美日韩在线视频| 伊人伊成久久人综合网小说| 国产婷婷一区二区| 日韩中文字幕在线视频观看| 中文字幕在线播放一区| 日韩不卡一二三区| 欧美日韩在线播放一区| 日韩在线精品视频| 日韩在线中文字幕| 日韩三级视频在线播放| 国产在线观看a| 日韩欧美专区在线| 日韩美女中文字幕| 本道综合精品| 欧美日韩国产中文精品字幕自在自线| 亚洲综合在线小说| 在线国产91| 日韩中文在线字幕| 在线国产一级| 日韩一二三四区| 欧美99久久| 一区二区三区免费看视频| 日韩在线视频二区| av亚洲免费| 日韩在线视频在线观看| 国产黄色一级片| 一区二区中文字幕在线| 国产丝袜在线播放| 欧美日韩中文字幕综合视频| av中文天堂在线| 高清国产一区| 精品色蜜蜜精品视频在线观看| 91精品观看| 天天摸日日摸狠狠添| 国产欧美日韩久久| 日韩国产在线观看一区| 中文官网资源新版中文第二页在线观看 | 影音先锋中文字幕在线观看| 中文字幕亚洲在| 久久夜色精品国产欧美乱极品| 中文字幕在线视频久| 欧美日韩综合高清一区二区| 国产69精品久久久久孕妇国产69久久| 一本久久a久久精品亚洲| 亚洲成在线观看| 欧美日韩激情一区| 国产v日产∨综合v精品视频| 久久香蕉精品| 尤物在线精品| 久久精品不卡| 中文字幕高清在线播放| 欧美乱大交xxxxx另类| 中文字幕国产欧美| 久久久精品99| 精品日韩av| 日韩欧美国产成人一区二区| 日韩欧美国产综合| 日韩av一区二区在线| 一区二区三区高清在线| 精品福利在线观看| 黄色国产网站在线观看| 国内精品99| 欧美日韩免费不卡视频一区二区三区| 国产成人综合精品| 日韩av综合在线观看| 亚洲一级影院| 日韩在线播放一区二区| 日韩中文字幕视频在线观看| 日韩.欧美.亚洲| 一区二区不卡视频在线观看| 国产网站av| 欧美日韩国产页| 国产1卡2卡三卡四卡网站| 中文字幕日韩在线观看| 欧美日韩国产成人| 高清1区2区| 国产高清精品在线观看| 亚洲国产无线乱码在线观看| 日本免费看黄| 91精品久久久久久久久| 国产一区免费视频| 欧美日韩亚洲综合| 午夜黄色小视频| 一区二区三区在线播放欧美| 男人的天堂网av| 91精品国产综合久久香蕉最新版| 国产欧美日韩第一页|