package com.ly.list;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestList {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("1");
set.add("3");
set.add("1");
set.add("1");
set.add("2");
//System.out.println(set.size());
//遍历set
for(String s:set){
System.out.println(s);
}
/* List<String> list = new ArrayList();
list.add("王丽丽");
list.add("赵四");
list.add("刘三");
//遍历
for(int i=0; i<list.size();i++){
System.out.println(list.get(i));
}
System.out.println("------------------------------");
//foreach
for(String str:list){
System.out.println(str);
}
*/
/* List list = new ArrayList();
list.add(1);
list.add("ddd");
list.add("ddd");
list.add("ddd");
list.add("ddd");
list.add("ddd");
for (int i = 0; i<list.size();i++){
System.out.println(list.get(i));
}*/
}
}
List 接口特点:
有序, 可以重复, 当有重复内容时, 集合长度(size()) 一致变化
Set 接口特点:
无序, 不可以重复, 重复时发生覆盖, 重复的数据 size() 只会记录为1条
List接口与Set接口的区别主要体现在以下几个方面:
- 元素重复性:
- List接口:允许存储重复的元素,并且元素是有序的,即按照它们被添加到List中的顺序排列。
- Set接口:不允许存储重复的元素,元素是无序的,即Set中的元素没有特定的顺序。
- 检索效率:
- Set接口:检索效率相对较低,但删除和插入元素的效率较高,因为插入和删除操作不会引起元素位置的变化。1
- List接口:查找元素的效率较高,但插入和删除元素的效率较低,因为这些操作会导致其他元素位置的变化。
- 迭代器支持:
- List接口:提供了多种迭代器,包括普通的Iterator和双向的ListIterator,允许从两个方向遍历集合中的元素。
- Set接口:只提供了普通的Iterator迭代器,不支持双向遍历。
-
子集操作:
- List接口:提供了subList方法,可以获取通过下标范围划出的子集。
- Set接口:没有提供类似的方法来获取子集。
-
其他功能:
- List接口:实现了RandomAccess接口,支持快速随机访问。
- Set接口:没有实现RandomAccess接口,不支持快速随机访问。