Set<T>和List<T>的区别
时间: 2024-05-28 10:01:57 浏览: 18
Set<T>和List<T>都是Java中的集合类,但它们有以下几点不同:
1. Set<T>中的元素无序且不可重复,而List<T>中的元素是有序且可重复的。
2. Set<T>中不能存储null元素,而List<T>可以存储null元素。
3. Set<T>中的元素判重是根据元素的equals()方法和hashCode()方法来实现的,而List<T>中的元素判重是根据equals()方法来实现的。
4. Set<T>中的元素访问速度较快,因为它是基于哈希表实现的,而List<T>中的元素访问速度较慢,因为它是基于数组实现的。
5. Set<T>中没有提供get()方法,因为元素是无序的,只能通过迭代器来访问元素;而List<T>提供了get()方法,可以通过下标来访问元素。
6. Set<T>中提供了几种特殊的集合操作,如交集、并集、差集等,而List<T>没有提供这些操作。
总之,Set<T>适用于需要去重、不需要顺序、需要高效访问的场景,而List<T>适用于需要有序、可以重复、需要快速随机访问的场景。
相关问题
List<T> 转 另外List<T>类型
List<T> 转换成另外一种 List<T> 类型,需要进行类型转换和数据复制。通常的做法是遍历原始的 List<T> 对象,然后对每个元素进行类型转换和复制操作,将其添加到新的 List<T> 对象中。
以下是一个Java语言的例子,将一个 List<UserDTO> 转换成 List<UserDO>:
```
public class UserDTO {
private Long id;
private String name;
private Integer age;
// getter and setter
}
public class UserDO {
private Long id;
private String username;
private Integer userAge;
// getter and setter
}
public class ListConverter {
public static List<UserDO> toUserDOList(List<UserDTO> userDTOList) {
List<UserDO> userDOList = new ArrayList<>();
for (UserDTO userDTO : userDTOList) {
UserDO userDO = new UserDO();
userDO.setId(userDTO.getId());
userDO.setUsername(userDTO.getName());
userDO.setUserAge(userDTO.getAge());
userDOList.add(userDO);
}
return userDOList;
}
}
```
在上面的例子中,ListConverter是一个转换工具类,toUserDOList方法将 List<UserDTO> 对象转换成 List<UserDO> 对象,并且进行了类型转换和复制操作。可以根据实际情况进行修改和扩展。
<T extends EntityBean> List<T>
<T extends EntityBean> List<T> 是一个泛型方法,它接受一个类型为 EntityBean 的参数 T,并返回一个 T 类型的 List 集合。泛型方法中的 <T extends EntityBean> 表示 T 类型必须是 EntityBean 类型或其子类类型。
EntityBean 是一个 Java Bean 实体类的抽象基类,它包含了一些通用的属性和方法,比如 getId()、setId() 等方法,它的子类可以继承这些属性和方法,从而减少了代码的重复性。
因此,使用 <T extends EntityBean> List<T> 可以创建一个包含 EntityBean 及其子类对象的 List 集合,方便统一管理和操作这些对象。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)