List和Set都是Java中两种常见的集合类型,它们的主要区别在于:
- List是有序的集合,可以包含重复元素,允许通过索引来访问、插入、修改和删除元素;
- Set是无序的集合,不允许包含重复元素,只能判断集合中是否包含某个元素。
下面是一个简单的示例,说明List和Set之间的区别:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ListAndSetExample {
public static void main(String[] args) {
/* List */
List<String> fruitList = new ArrayList<>();
fruitList.add("apple");
fruitList.add("banana");
fruitList.add("kiwifruit");
fruitList.add("orange");
fruitList.add("apple"); // 可以包含重复元素
System.out.println(fruitList); // 输出为 [apple, banana, kiwifruit, orange, apple]
System.out.println(fruitList.get(1)); // 输出为 "banana"
fruitList.set(3, "grapefruit"); // 修改元素
System.out.println(fruitList); // 输出为 [apple, banana, kiwifruit, grapefruit, apple]
fruitList.remove("apple"); // 删除元素
System.out.println(fruitList); // 输出为 [banana, kiwifruit, grapefruit]
/* Set */
Set<String> fruitSet = new HashSet<>();
fruitSet.add("apple");
fruitSet.add("banana");
fruitSet.add("kiwifruit");
fruitSet.add("orange");
fruitSet.add("apple"); // 不能包含重复元素
System.out.println(fruitSet); // 输出为 [banana, apple, kiwifruit, orange]
System.out.println(fruitSet.contains("kiwifruit")); // 输出为 true
fruitSet.remove("apple"); // 删除元素
System.out.println(fruitSet); // 输出为 [banana, kiwifruit, orange]
}
}
在这个例子中,我们首先定义了一个List类型的fruitList和一个Set类型的fruitSet,分别往它们中添加了相同的元素。然后,我们对它们进行一些基本的操作,比如访问、修改、删除等。从输出结果可以看出,List是有序的,而且可以包含重复元素;Set是无序的,不能包含重复元素。