Java集合框架是Java编程语言中的一个重要组成部分,它提供了一种方便的方法来存储和访问数据。它由一组可以存储和访问数据的对象组成,这些对象可以是任何类型的数据,包括基本数据类型、对象、函数、字符串、布尔值或其他集合。
Java集合可以用来存储和访问大量的数据,并且可以使用不同的方法来实现这一目标。最常用的方法是使用“Set”集合,它允许开发人员将多个元素存储在一个集合中,并使用特定的方法来获取这些元素。Set集合也可以使用不同的方法来保证其中所有元素都是唯一的,因此开发人员不必再考虑重复项。
// 创建 Set 集合 Set<String> set = new HashSet<String>(); // 添加元素 set.add("a"); set.add("b"); set.add("c"); // 获取 Set 集合大小 int size = set.size(); // 获取 Set 集合中所有元素 for (String s : set) { System.out.println(s); }
Set 表示唯一对象的集合。集合中元素的排序是不相关的。
集合框架提供三种类型的集合:
Set
接口对数学中的一组进行建模。集合是唯一元素的集合。
Java最多允许一个Set中的一个空元素。 Set
中元素的排序并不重要。
Java不保证 Set
中元素的排序。
当循环遍历 Set
的所有元素时,你得到 Set
中的每个元素一次。
集合框架提供 HashSet
类作为实现为设置
接口。
以下代码显示了如何创建一个Set并向其添加元素。 当向集合添加重复元素时,它们将被忽略。
如果比较它们,则在集合中的两个元素被认为是相等的使用 equals()
方法返回true。
import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Set<String> s1 = new HashSet<>(); // Add a few elements s1.add("HTML"); s1.add("CSS"); s1.add("XML"); s1.add("XML"); // Duplicate // Create another set by copying s1 Set<String> s2 = new HashSet<>(s1); // Add a few more elements s2.add("Java"); s2.add("SQL"); s2.add(null); // one null is fine s2.add(null); // Duplicate System.out.println("s1: " + s1); System.out.println("s1.size(): " + s1.size()); System.out.println("s2: " + s2); System.out.println("s2.size(): " + s2.size()); } }
上面的代码生成以下结果。
集合框架提供 LinkedHashSet
类作为 Set
接口的另一个实现类。
HashSet
不保证顺序元素。 LinkedHashSet
在插入元素时保持元素顺序。
import java.util.LinkedHashSet; import java.util.Set; public class Main { public static void main(String[] args) { Set<String> s1 = new LinkedHashSet<>(); s1.add("A"); s1.add("B"); s1.add("C"); s1.add("D"); System.out.println("LinkedHashSet: " + s1); } }
上面的代码生成以下结果。
我们可以对集合执行并集,交集和差分运算。
// Union of s1 and s2 will be stored in s1 s1.add(s2); // Intersection of s1 and s2 will be stored in s1 s1.retainAll(s2); // Difference of s1 and s2 will be stored in s1 s1.removeAll(s2);
在集合操作期间,修改s1。要保持原始设置不变,请在操作之前复制:
Set s1Unions2 = new HashSet(s1); // Make a copy of s1 s1Unions2.addAll(s2);
要测试集合s1是否是另一个集合s2的子集,请使用s2.containsAll(s1)方法。
import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Set<String> s1 = new HashSet<>(); s1.add("HTML"); s1.add("CSS"); s1.add("XML"); Set<String> s2 = new HashSet<>(); s2.add("Java"); s2.add("Javascript"); s2.add("CSS"); System.out.println("s1: " + s1); System.out.println("s2: " + s2); performUnion(s1, s2); performIntersection(s1, s2); performDifference(s1, s2); testForSubset(s1, s2); } public static void performUnion(Set<String> s1, Set<String> s2) { Set<String> s1Unions2 = new HashSet<>(s1); s1Unions2.addAll(s2); System.out.println("s1 union s2: " + s1Unions2); } public static void performIntersection(Set<String> s1, Set<String> s2) { Set<String> s1Intersections2 = new HashSet<>(s1); s1Intersections2.retainAll(s2); System.out.println("s1 intersection s2: " + s1Intersections2); } public static void performDifference(Set<String> s1, Set<String> s2) { Set<String> s1Differences2 = new HashSet<>(s1); s1Differences2.removeAll(s2); Set<String> s2Differences1 = new HashSet<>(s2); s2Differences1.removeAll(s1); System.out.println("s1 difference s2: " + s1Differences2); System.out.println("s2 difference s1: " + s2Differences1); } public static void testForSubset(Set<String> s1, Set<String> s2) { System.out.println("s2 is subset s1: " + s1.containsAll(s2)); System.out.println("s1 is subset s2: " + s2.containsAll(s1)); } }
上面的代码生成以下结果。
JSF教程 -JSF参数示例我们可以使用f:param标签将参数传递给组件或传递请求参数。以下代码显示如何将参数传递到UI组件。h:outputF...
JSF教程 -JSF输出链接h:outputLink标签渲染一个HTML“anchor元素。以下JSF标记h:outputLink value=page1.jsf Page 1/h:outputLin...
JSF教程 -JSF表单单选按钮示例以下部分显示如何使用JSF中的创建单选按钮。h:selectOneRadio标签呈现一组类型为“radio”的HTML输...
JSF教程 -JSF OutputScript示例h:outputScript标记渲染类型为“script的HTML元素,类型为“text/javascript。此标记将外部JavaSc...
JSF教程 -JSF验证字符串长度示例f:validateLength标记用于验证字符串值的长度。我们可以使用f:validateLength标签,如下所示。f:...