找到 9301 篇文章 关于面向对象编程
12K+ 阅读量
HashMap、TreeMap 和 LinkedHashMap 都实现了 java.util.Map 接口,以下是它们的特性。HashMapHashMap 的插入和查找复杂度为 O(1)。HashMap 允许一个 null 键和多个 null 值。HashMap 不维护任何顺序。TreeMapTreeMap 的插入和查找复杂度为 O(logN)。TreeMap 不允许 null 键,但允许多个 null 值。TreeMap 维护顺序。它按升序存储排序的键。LinkedHashMapLinkedHashMap 的插入和查找复杂度为 O(1)。LinkedHashMap 允许一个 null 键和多个 null 值。LinkedHashMap 维护键值对插入的顺序。示例import java.util.HashMap; import java.util.Hashtable; import java.util.LinkedHashMap; import java.util.Map; import java.util.TreeMap; public class Tester { ... 阅读更多
3K+ 阅读量
以下是 Java 中 HashTable 和 HashMap 类的一些显著区别。HashTableHashMap同步HashTable 是同步的。HashMap 不是同步的。线程安全HashTable 是线程安全的。HashMap 不是线程安全的。空对象HashTable 不允许 null 键或 null 值。HashMap 允许一个 null 键和多个 null 值。性能HashTable 速度更快。HashMap 比 HashTable 慢。自 Java 版本 1.21.5 起示例import java.util.HashMap; import java.util.Hashtable; import java.util.Map; public class Tester { public static void main(String args[]) { Map map = new HashMap(); map.put("1", "One"); map.put("2", "Two"); map.put("3", "Three"); map.put("5", "Five"); ... 阅读更多
5K+ 阅读量
以下是 Java 中 HashMap 和 ConcurrentHashMap 类的一些显著区别。HashMapConcurrentHashMap同步HashMap 不是同步的。ConcurrentHashMap 是同步的。线程安全HashMap 不是线程安全的。ConcurrentHashMap 是线程安全的。迭代器类型HashMap 迭代器是快速失败的,如果在迭代期间发生并发修改,ArrayList 会抛出 ConcurrentModificationException。ConcurrentHashMap 是故障安全的,在迭代期间永远不会抛出 ConcurrentModificationException。空值HashMap 允许键和值为 null。ConcurrentHashMap 不允许 null 键/值。它会抛出 NullPointerException。性能HashMap 速度更快。ConcurrentHashMap 比 HashMap 慢。自 Java 版本 1.21.5 起示例import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class Tester { public static void main(String[] args) { List arrayList = new ArrayList(); ... 阅读更多
3K+ 阅读量
以下是 Java 中 ArrayList 和 CopyOnWriteArrayList 类的一些显著区别。ArrayListCopyOnWriteArrayList同步ArrayList 不是同步的。CopyOnWriteArrayList 是同步的。线程安全ArrayList 不是线程安全的。CopyOnWriteArrayList 是线程安全的。迭代器类型ArrayList 迭代器是快速失败的,如果在迭代期间发生并发修改,ArrayList 会抛出 ConcurrentModificationException。CopyOnWriteArrayList 是故障安全的,在迭代期间永远不会抛出 ConcurrentModificationException。其背后的原因是 CopyOnWriteArrayList 在每次修改时都会创建一个新的数组列表。删除操作ArrayList 迭代器支持在迭代期间删除元素。如果尝试在迭代期间删除元素,CopyOnWriteArrayList.remove() 方法会抛出异常。性能ArrayList 速度更快。CopyOnWriteArrayList 比 ArrayList 慢。自 Java 版本 1.21.5 起示例import java.util.Iterator; import java.util.concurrent.CopyOnWriteArrayList; public class Tester { ... 阅读更多
378 阅读量
java.util.Deque 接口是 java.util.Queue 接口的子类型,它支持在两端插入和删除元素。接口声明public interface Deque extends QueueArrayDeque 类java.util.ArrayDeque 类提供可调整大小的数组并实现 Deque 接口。以下是关于数组 Deque 的重要要点:数组 Deque 没有容量限制,因此它们会根据需要增长以支持使用。它们不是线程安全的;在没有外部同步的情况下。它们不支持多个线程的并发访问。数组 Deque 中不允许使用空元素。它们比 Stack 和 LinkedList 更快。此类及其迭代器实现了 Collection 和 Iterator 的所有可选方法... 阅读更多
4K+ 阅读量
类声明public class CopyOnWriteArrayList extends Object implements List, RandomAccess, Cloneable, SerializableCopyOnWriteArrayList 是 ArrayList 的线程安全变体,其中可以更改 ArrayList 的操作(add、update、set 方法)会创建底层数组的克隆。CopyOnWriteArrayList 用于线程环境中,其中读取操作非常频繁,而更新操作很少。CopyOnWriteArrayList 的迭代器永远不会抛出 ConcurrentModificationException。对 CopyOnWriteArrayList 的任何类型的修改都不会反映在迭代期间,因为迭代器已创建。不支持迭代中的 List 修改方法,如 remove、set 和 add。此方法将抛出 UnsupportedOperationException。可以将 null 添加到... 阅读更多
549 阅读量
类声明public class CopyOnWriteArraySet extends AbstractSet implements SerializableCopyOnWriteArraySet 类在内部使用 CopyOnWriteArrayList 执行所有操作,因此具有 CopyOnWriteArrayList 的基本属性。CopyOnWriteArraySet 是线程安全的。CopyOnWriteArraySet 用于线程环境中,其中读取操作非常频繁,而更新操作很少。CopyOnWriteArraySet 的迭代器永远不会抛出 ConcurrentModificationException。对 CopyOnWriteArraySet 的任何类型的修改都不会反映在迭代期间,因为迭代器已创建。不支持迭代中的 Set 修改方法,如 remove、set 和 add。此方法将抛出 UnsupportedOperationException。CopyOnWriteArraySet 方法以下是 CopyOnWriteArraySet 类中可用的一些重要方法。序号方法 & ... 阅读更多
5K+ 阅读量
我们可以使用 Java 的 BufferedReader 类读取文件中的字符。请参阅以下示例:示例考虑类路径中的以下文本文件。test.txt这是第 1 行 这是第 2 行 这是第 3 行 这是第 4 行 这是第 5 行 这是第 6 行 这是第 7 行 这是第 8 行 这是第 9 行 这是第 10 行Tester.javaimport java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; public class Tester { private static final String FILE_PATH = "data.txt"; public static void main(String args[]) throws IOException { ... 阅读更多
548 阅读量
我们可以通过将文件读入字符串,然后根据“\r”模式进行分割来读取文件中的段落。请参阅以下示例:示例考虑类路径中的以下文本文件。test.txt这是第 1 行 这是第 2 行 这是第 3 行 这是第 4 行 这是第 5 行 这是第 6 行 这是第 7 行 这是第 8 行 这是第 9 行 这是第 10 行Tester.javaimport java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Tester { public static void main(String args[]) throws IOException { FileUtil fileUtil = ... 阅读更多
3K+ 阅读量
对于并发执行,Java 中的 CountDownLatch 是一个重要的类,它确保一个或多个线程排队,以便其他线程完成其操作集。为了更好地理解 Java 中的 CountDownLatch,在本文中,您将学习使用示例和 CountDownLatch 方法来学习 CountDownLatch 的工作原理。Java 中的 CountDownLatch 及其工作原理基于计数值,CountDownLatch 用于多种用途,如下所示:当我们以计数值 1 开始 CountDownlatch 时,它将简单地充当打开/关闭闩锁或门。在... 阅读更多