日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 有序set_Java 从Set里面取出有序的记录详解及实例

發布時間:2025/3/15 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 有序set_Java 从Set里面取出有序的记录详解及实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 從Set里面取出有序的記錄詳解及實例

Set里面的記錄是無序的,如果想使用Set,然后又想里面的記錄是有序的,就可以使用TreeSet,而不是HashSet,在使用TreeSet的時候,里面的元素必須是實現了Comparable接口的,TreeSet在進行排序的時候就是通過比較它們的Comparable接口的實現!

下面是HashSet的無序和TreeSet的有序的比較:

Test類:

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

import java.util.TreeSet;

public class Test {

public static void main(String args[]) {

useHashSet();

useTreeSet();

}

/**

* Set默認是無序的,一般從Set里面拿出來的數據每次的順序都會是不一樣的,如果想里面的順序一樣

* 就使用TreeSet

*/

public static void useHashSet() {

System.out.println("-----------------HashSet Start------------------");

Set set = new HashSet();

for (int i = 0; i < 10; i++) {

User user = new User((i + 1), "uname" + (i + 1), "pswd" + (i + 1));

set.add(user);

}

Iterator iter = set.iterator();

while (iter.hasNext())

System.out.println(iter.next());

System.out.println("------------------HashSet End----------------------");

}

/**

* TreeSet是有序的,TreeSet在給里面的元素排序是通過它們的Comparable接口的實現來比較的,所以,

* 如果里面的對象沒有實現Comparable接口,則TreeSet在運行時就會報錯,所以如果想從Set里面拿出來的數據是

* 有序的就得使里面的對象實現Comparable接口,User2是實現了Comparable接口的,并對它們的id進行比較,id大

* 的就會排在后面

*/

public static void useTreeSet() {

System.out.println("-----------------TreeSet Start------------------");

Set set = new TreeSet();

for (int i = 0; i < 10; i++) {

User2 user = new User2((i + 1), "uname" + (i + 1), "pswd" + (i + 1));

set.add(user);

}

Iterator iter = set.iterator();

while (iter.hasNext())

System.out.println(iter.next());

System.out.println("------------------TreeSet End----------------------");

}

}

User類:

public class User {

private int id;

private String username;

private String password;

public User() {

}

public User(int id, String username, String password) {

this.id = id;

this.username = username;

this.password = password;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + id;

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

User other = (User) obj;

if (id != other.id)

return false;

return true;

}

@Override

public String toString() {

return " id = " + id + ", \r\n username = " + username

+ ", \r\n password = " + password;

}

}

User2類:

public class User2 implements Comparable {

private int id;

private String username;

private String password;

public User2() {

}

public User2(int id, String username, String password) {

this.id = id;

this.username = username;

this.password = password;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + id;

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

User2 other = (User2) obj;

if (id != other.id)

return false;

return true;

}

@Override

public String toString() {

return " id = " + id + ", \r\n username = " + username

+ ", \r\n password = " + password;

}

@Override

public int compareTo(User2 user) {

// TODO Auto-generated method stub

//這里我的實現是按照id進行排序

if (user == null)

return 1;

if (id > user.getId())

return 1;

else if (id == user.getId())

return 0;

else

return -1;

}

}

運行結果:

-----------------HashSet Start------------------

id = 3,

username = uname3,

password = pswd3

id = 4,

username = uname4,

password = pswd4

id = 1,

username = uname1,

password = pswd1

id = 2,

username = uname2,

password = pswd2

id = 7,

username = uname7,

password = pswd7

id = 8,

username = uname8,

password = pswd8

id = 5,

username = uname5,

password = pswd5

id = 6,

username = uname6,

password = pswd6

id = 9,

username = uname9,

password = pswd9

id = 10,

username = uname10,

password = pswd10

------------------HashSet End----------------------

-----------------TreeSet Start------------------

id = 1,

username = uname1,

password = pswd1

id = 2,

username = uname2,

password = pswd2

id = 3,

username = uname3,

password = pswd3

id = 4,

username = uname4,

password = pswd4

id = 5,

username = uname5,

password = pswd5

id = 6,

username = uname6,

password = pswd6

id = 7,

username = uname7,

password = pswd7

id = 8,

username = uname8,

password = pswd8

id = 9,

username = uname9,

password = pswd9

id = 10,

username = uname10,

password = pswd10

------------------TreeSet End----------------------

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

總結

以上是生活随笔為你收集整理的java 有序set_Java 从Set里面取出有序的记录详解及实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。