网站上怎么做图片变换动图关于网站开发书籍
news/
2025/9/23 22:24:30/
文章来源:
网站上怎么做图片变换动图,关于网站开发书籍,阿里云买域名,微信微网站开发报价单Map和Set接口
1.Set集合#xff1a;独特性与无序性
Set是Java集合框架中的一种#xff0c;它代表着一组无序且独特的元素。这意味着Set中的元素不会重复#xff0c;且没有特定的顺序。Set接口有多个实现类#xff0c;如HashSet、LinkedHashSet和TreeSet。
2.Map集合独特性与无序性
Set是Java集合框架中的一种它代表着一组无序且独特的元素。这意味着Set中的元素不会重复且没有特定的顺序。Set接口有多个实现类如HashSet、LinkedHashSet和TreeSet。
2.Map集合键值对的存储
Map是Java集合框架中的另一种它存储了一组键值对Key-Value Pair。每个键映射到一个值使得通过键可以高效地检索对应的值。Map接口有多个实现类如HashMapLinkedHashMap和TreeMap。
搜索树
1.概念
二叉搜索树又称二叉排序树它或者是一棵空树或者是具有以下性质的二叉树 若它的左子树不为空则左子树上所有节点的值都小于根节点的值 若它的右子树不为空则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 2.创建一个二叉搜索树 查找 插入 public boolean insert2(int val){TreeNode nodenew TreeNode(val);if(rootnull){rootnode;} else {TreeNode curroot;while(cur!null){if(cur.valval){if(cur.rightnull){cur.rightnode;break;}else if(cur.right.valval){node.rightcur.right;cur.rightnode;break;}else{curcur.right;}}else if(cur.valval){if(cur.leftnull){cur.leftnode;break;}else if(cur.left.valval){node.leftcur.left;cur.leftnode;break;}else{curcur.right;}}else{return false;}}}return true;}
这段代码有问题对于一个已经有俩个叉的节点我们不能去更新它的左右孩子所以对于二叉搜索树的插入操作必须是在空节点上进行插入代码如下 删除 public boolean remove(int val){TreeNode curroot;TreeNode parentnull;while(cur!null){if(cur.valval){break;}else if(cur.valval){parentcur;curcur.right;}else{parentcur;curcur.left;}}if(curnull){return false;} else if (cur.leftnull) {if(curroot){rootcur.right;} else if (curparent.left) {parent.leftcur.right;}else {parent.right cur.right;}}else if(cur.rightnull){if(curroot){rootcur.left;} else if (curparent.left) {parent.leftcur.left;}else {parent.right cur.left;}}else{TreeNode targetparentcur;TreeNode targetcur.right;while(target.left!null){targetparenttarget;targettarget.left;}if(targetparentcur){cur.valtarget.val;targetparent.righttarget.right;}cur.valtarget.val;targetparent.lefttarget.right;}return true;}
第一个while是找到待删除的节点
如果待删节点左边为空如果待删节点是根节点则让待删节点的右边变成根如果不是根节点而是上一个结点的右面……是上一个结点的左面……
如果待删节点右面为空……
如果待删节点左右都不为空我们的做法是从待删结点的左边找到最大值即左边子树的最右面的节点或者从待删结点的右面找到最小值即右面子树的最左边节点。找到之后还要分类分类如代码所示
3.和Java类集的关系 TreeMap 和 TreeSet 即 java 中利用搜索树实现的 Map 和 Set 实际上用的是红黑树而红黑树是一棵近似平衡的 二叉搜索树即在二叉搜索树的基础之上 颜色以及红黑树性质验证关于红黑树的内容后序再进行讲解。 搜索
1.概念 Map 和 set 是一种专门用来进行搜索的容器或者数据结构其搜索的效率与其具体的实例化子类有关 。 2.模型 一般把搜索的数据称为关键字 Key 和关键字对应的称为值 Value 将其称之为 Key-value 的键值对所以 模型会有两种 纯key模型比如快速查找某个电话在不在通讯录里面。 key-value模型比如每个梁山好汉有自己的名字同时也有自己的绰号比如统计每个单词出现的次数 其中Set是纯key模型Map是key-value模型 Map的使用
1.实例化子类 这是一个泛型的接口要传入key和value的类型
假设要统计单词的次数则对于key是String类型value是Integer类型所以如下 如果实例化TreeMap子类则其搜索的时间复杂度为O(logN)如果是HashMap则是O(1)。所以其搜索的效率与其具体的实例化子类有关。
注意使用时要导入对应的包 其次key是唯一的不可以重复
2.Map中的常用方法 put方法返回值是放入的该单词的次数 get方法参数是要得到的单词返回值是单词的次数 getOrDefault方法如果包含该单词则返回对应的value反之返回我们自己传入的defaultValue
boolean containsKey(Object key);判断是否包含key
boolean containsValue(Object value);判断是否包含value
V remove(Object key);删除key即删除某个单词返回对应的value即次数
void putAll(Map? extends K, ? extends V m);将m中的key和value全部放到map1中其中m的key的类型是map1的key的类型的子类m的value类型是map1的value的类型的子类如下 SetK keySet();返回所有key的不重复集合如下 CollectionV values();这个方法是返回所有value的集合
返回值是CollectionV那我进行向下转型用ArrayList接收可以吗试一试 运行之后发现报错了为什么呢这不就是向下转型吗实际上这是非法的向下转型看下面的例子Student是Person的子类 这样的代码在运行时没有报错 这个代码报错了。其实是没真正理解向下转型以及父类和子类的关系
在Java中父类引用可以指向子类实例反之则不可以
第一段代码中p是父类引用它是指向了子类实例然后将一个子类实例p给到了子类的引用自然是可以的而第二段代码中p是父类引用并且指向父类实例然后将哟个父类实例p给到一个子类引用就是不可以的
这也就是为什么不可以用ArrayList来接收Collection类的返回值
那么如何存储到ArrayList中用Arraylist的一个构造方法 代码如下 或者将它存放到HashSet中 SetMap.EntryK, V entrySet();要想了解这个方法首先要看一下Map.Entry:Entry是Map中的一个内部接口包含了key和value所以SetMap.EntryK, V entrySet();这个方法可以将key和value看成一个都放到set中如下 或者如下打印 3.注意
1.Map中存放的键值对的key是唯一的value是可以重复的就比如单词出现的次数的统计
2.在TreeMap中插入键值对时key不能为空value可以为空而HashMap中的key和value都可以为空
3.Map中的key可全部分离出来存到Set中进行访问
Set的使用
Set使用和Map类似请详细看源码
只强调几个
IteratorE iterator();用法如下 boolean addAll(Collection? extends E c);
boolean containsAll(Collection? c); 注意这俩个方法的参数是实现了Collection接口的类所以单纯的整型数组不可以作为参数传递要用到Arrays中的aslist方法
boolean retainAll(Collection? c);这个方法只保留这个集合中包含在指定集合中的元素可选操作。换句话说从这个集合中删除所有不包含在指定集合中的元素
注意
1.Set时继承自Collection的接口类
2.TreeSet的底层是一个TreeMap 不管实例化一个什么样的TreeSetvalue都是一个Object对象
3.Set中的key是唯一的
4.TreeSet的key不能是null但HashSet可以
5.添加的对象必须是可以进行比较的
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914080.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!