首页 > 代码库 > Java 集合
Java 集合
在Java Collections Framework中,不同类型的集合使用不同类型的数据结构以不同的方式存储它们的元素。 集合框架提供了遍历集合的以下方法: 使用迭代器 使用for-each循环 使用forEach()方法 使用迭代器 迭代器可以对集合执行以下三个操作: 检查是否有尚未访问的元素。 hasNext() 检查是否有下一个访问的元素。 next() 删除集合的最后访问元素。 remove() 例子1 使用迭代器打印列表的所有元素: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Main { public static void main(String[] args) { // Create a list of strings List<String> names = new ArrayList<>(); names.add("A"); names.add("B"); names.add("C"); Iterator<String> nameIterator = names.iterator(); while (nameIterator.hasNext()) { String name = nameIterator.next(); System.out.println(name); } } } 结果: A B C 例2 使用迭代器遍历列表的所有元素,并使用remove()方法删除该元素: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Main { public static void main(String[] args) { // Create a list of strings List<String> names = new ArrayList<>(); names.add("A"); names.add("B"); names.add("C"); Iterator<String> nameIterator = names.iterator(); while (nameIterator.hasNext()) { String name = nameIterator.next(); System.out.println(name); nameIterator.remove(); } System.out.println(names); } } 结果: A B C [] 使用for-each循环 使用for-each循环遍历任何实现类实现Iterable接口的集合。 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> names = new ArrayList<>(); names.add("A"); names.add("B"); names.add("C"); for (String name : names) { System.out.println(name); } } } 结果: A B C 使用forEach()方法 Iterable接口包含一个新的 forEach(Consumer action)方法,该方法遍历所有元素并应用操作。 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // Create a list of strings List<String> names = new ArrayList<>(); names.add("A"); names.add("B"); names.add("C"); names.forEach(System.out::println); } } 结果: A B C
Set 表示唯一对象的集合。集合中元素的排序是不相关的。 集合框架提供三种类型的集合: 数学集 排序集 导航集 数学集 Set 接口对数学中的一组进行建模。集合是唯一元素的集合。 Java最多允许一个Set中的一个空元素。 Set 中元素的排序并不重要。 Java不保证 Set 中元素的排序。 当循环遍历 Set 的所有元素时,你得到 Set 中的每个元素一次。 HashSet 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()); } } 结果: s1: [HTML, CSS, XML] s1.size(): 3 s2: [null, SQL, HTML, CSS, XML, Java] s2.size(): 6 LinkedHashSet 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); } } 结果: LinkedHashSet: [A, B, C, D] 集合操作 我们可以对集合执行并集,交集和差分运算。 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); } 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); } } 结果: s1: [HTML, CSS, XML] s2: [Javascript, CSS, Java] s1 union s2: [Javascript, HTML, CSS, XML, Java] s1 intersection s2: [CSS] s1 difference s2: [HTML, XML] s2 difference s1: [Javascript, Java]
Java 集合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。