栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

集合视图是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集合视图是什么?

另一个对象的 视图 根本不包含其自己的数据。它的所有操作都是根据对另一个对象的操作来实现的。

例如,a的

keySet()
视图
Map
可能具有如下所示的实现:

class KeySet implements Set<K> {  private final Map<K, V> map;  public boolean contains(Object o) {    return map.containsKey(o);  }  ...}

特别是,只要您修改视图的 后备对象 (在此为

Map
背景)
keySet()
该视图就会反映相同的更改。例如,如果您致电
map.remove(key)
,则无需进行任何其他操作即可
keySet.contains(key)
返回
false

或者,

Arrays.asList(array)
提供
List
该阵列的视图。

String[] strings = {"a", "b", "c"};List<String> list = Arrays.asList(strings);System.out.println(list.get(0)); // "a"strings[0] = "d";System.out.println(list.get(0)); // "d"list.set(0, "e");System.out.println(strings[0]); // "e"

视图只是查看原始支持对象中数据的另一种方式-

Arrays.asList
使您可以使用
List
API访问普通数组;
Map.keySet()
使您可以
Map
像完全完美一样访问a的键
Set
-所有这些都
无需 复制数据或创建另一个数据结构。

通常,使用视图而不是进行复制的优点是效率。例如,如果您有一个数组,并且需要将其传递到采用的方法,则

List
您无需创建新
ArrayList
的数据副本和完整的数据副本-
Arrays.asList
视图仅占用恒定的额外内存,并且仅实现所有
List
通过访问原始数组的方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号