Java容器学习(2)
【摘要】 Deque 接口【双端队列】元素可以在两端进出。deque.offerFirst(e); // 队列首添加元素 deque.pollFirst(); // 队列首移除元素deque.peekFirst(); // 获取队列首元素deque.offerLast(e); // 队列尾添加元素d...
Deque 接口
【双端队列】元素可以在两端进出。
deque.offerFirst(e); // 队列首添加元素
deque.pollFirst(); // 队列首移除元素
deque.peekFirst(); // 获取队列首元素
deque.offerLast(e); // 队列尾添加元素
deque.pollLast(); // 队列尾移除元素
deque.peekLast(); // 获取队列尾元素
/* offer/peek/poll 方法可以用 add/get/remove 方法代替,但队列空/满时会抛出异常。 */Copy to clipboardErrorCopied
Set 接口
【集】数据不可重复。
// 修改
set.add("data"); // 添加元素
set.remove("data"); // 删除元素
set.clear(); // 清除所有元素
// 查询
set.get(1); // 按序号查找元素(仅限于有序的 set 接口)
set.isEmpty(); // 判断是否为空
set.size(); // 返回元素个数
set.contains("data"); // 判定是否含有元素Copy to clipboardErrorCopied
HashSet 类无序,因此不支持 get 方法:获取对象必须要通过 Iterator 来遍历。
Collections 类
Collections 类是针对集合类的一个帮助类,他提供一系列静态方法实现各种集合操作。
- 排序操作(主要针对List接口)
Collections.swap(list, 1, 2); // 元素交换顺序
Collections.shuffle(list); // 元素随机排序
Collections.reverse(list); // 元素颠倒排序
Collections.sort(list); // 元素按大小排序,可以自定义比较顺序
Collections.rotate(list, 2); // 元素右移指定长度Copy to clipboardErrorCopied
- 查找和替换
Collections.binarySearch(list, "data"); // 二分查找元素索引,只适用于有序集合
Collections.max(list); // 返回最大元素,可以自定义比较顺序
Collections.min(list); // 返回最小元素,可以自定义比较顺序
Collections.frequency(list, "data"); // 返回对象出现次数
Collections.fill(list, "data"); // 使用指定元素填充
Collections.replaceAll(list, "old", "new"); // 使用指定元素替换Copy to clipboardErrorCopied
- 上锁(主要针对List接口)
调用 Collections 类中的 synchronizedList 方法,可以将 List 接口转换成线程安全的容器使用。
List 接口中的方法都会被添加 synchronized 锁(效率不高)。但是 iterator 方法没有加锁,如果要遍历还需要在外层加锁。
List list = Collections.synchronizedList(new ArrayList());
synchronized (list) {
Iterator i = list.iterator();
while (i.hasNext())
foo(i.next());
}Copy to clipboardErrorCopied
Map 接口
【图】组织存储 key-value 的数据元素组合:内部实际存储的是 Map.Entry<K, V>
静态内部类。
Entry 类可以通过 getKey、getValue、setKey、setValue 方法调整数据。
Map 接口方法
map.put("key_1",1); // 添加键值对,已有 key 则覆盖 value
map.putIfAbsent("key_2",2); // 添加键值对,已有 key 则不操作
map.remove("key_1"); // 删除键值对(按值)
map.remove("key_2",2); // 删除键值对(按键值)
map.get("key_1"); // 获取值, key 不存在返回null
map.getOrDefault("key_2",-1); // 获取值, key 不存在返回默认值
map.containsKey("key_1"); // 判断 key 是否存在
map.containsValue(1); // 判断 value 是否存在
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)