Set集合接口
&esmp;1,Set集合特点:不包含重复元素(数学中集合的抽象)
&esmp;2,Set接口特点:只包含继承自Collection方法,并添加了禁止重复元素的限制
&esmp;3,基本实现类
&esmp;&esmp;(1)java.util.HashSet,元素无序(底层基于HashMap确定元素是否重复)
&esmp;&esmp;(2)java.util.LinkedHashSet,元素有序
&esmp;&esmp;(3)java.util.TreeSet,元素有序
&esmp;&esmp;(4)注意:无论使用有序/无序实现,均无基于索引的操作方法
前情提要(User类)
package com.example20.collection;
public class User {
public static final String HAERBIN = "哈尔滨";
public static final String BEIJING = "北京";
private int id;
private String name;
private String city;
public User() {
}
public User(String name) {
this.name = name;
}
public User(int id, String name, String city) {
this.id = id;
this.name = name;
this.city = city;
}
public int getId() {
return id;
}
public String getCity() {
return city;
}
public void setId(int id) {
this.id = id;
}
public void setCity(String city) {
this.city = city;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
具体的Set集合测试类
package com.example20.collection;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
getAddElement();
}
//Set没有基于索引的方法
private static void getAddElement() {
Set<User> users = new HashSet<>();
User user = new User("BO");
User user1 = new User("SUN");
users.add(user);
users.add(user1);
System.out.println(users.size()); //输出:2
users.add(user);
System.out.println(users.size()); //输出:2
//集合下foreach循环的方法
for (User u : users) {
System.out.println(u.getName());
}
//可以直接将一个set集合转换成List集合,当然也可以转换回来
List<User> userList = new ArrayList<>(users);
}
}
4,Set集合应用场景:逻辑上不能重复的对象集合
(1)扑克牌
(2)不重复的关系,人,事物等