当前位置: 首页 > wzjs >正文

西安网站建设培训中心百度上搜索关键词如何在首页

西安网站建设培训中心,百度上搜索关键词如何在首页,网站建设 前景 html5,wordpress链接网页位置目录 引言1. 搜索树1.1 二叉搜索树的概念1.2 二叉搜索树的操作1.2.1 查找1.2.2 插入1.2.3 删除 2. Map2.1 Map的概念2.2 Map接口内部的Entry接口(Map.Entry<K, V>)2.3 Map的常用方法 3. Set3.1 Set 概念3.2 Set常见方法 4. 总结 引言 本篇文章介绍Map和Set类和其实现类T…

目录

  • 引言
  • 1. 搜索树
    • 1.1 二叉搜索树的概念
    • 1.2 二叉搜索树的操作
    • 1.2.1 查找
      • 1.2.2 插入
      • 1.2.3 删除
  • 2. Map
    • 2.1 Map的概念
    • 2.2 Map接口内部的Entry接口(Map.Entry<K, V>)
    • 2.3 Map的常用方法
  • 3. Set
    • 3.1 Set 概念
    • 3.2 Set常见方法
  • 4. 总结

引言

本篇文章介绍Map和Set类和其实现类TreeMap和TreeSet类的使用。

1. 搜索树

在讲述TreeMap和TreeSet之前,先介绍一下搜索树,java中利用搜索树来实现Map和Set。在这里介绍一下二叉搜索树。

1.1 二叉搜索树的概念

二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,也叫二叉排序树。具有如下性质:

  1. 左子树上所有节点的值都小于其根节点的值。
  2. 右子树上所有节点的值都大于其根节点的值。
  3. 左子树和右子树也都是二叉搜索树。

1.2 二叉搜索树的操作

二叉搜索树的定义和二叉树一致

    static class TreeNode {public int val;public TreeNode left;//左孩子的引用public TreeNode right;//右孩子的引用public TreeNode(int val) {this.val = val;}}

1.2.1 查找

从根节点开始,比较当前节点的值与目标值。如果目标值小于当前节点的值,则移动到左子树;如果目标值大于当前节点的值,则移动到右子树;如果相等,则返回当前节点。循环继续,直到找到目标值或到达树的末端。

    public TreeNode search(int val) {TreeNode cur = root;while (cur != null) {if (cur.val < val) {cur = cur.right;} else if (cur.val > val) {cur = cur.left;} else {return cur;}}return null;}

1.2.2 插入

  1. 从根节点开始。
  2. 如果树为空,则新节点作为根节点。
  3. 否则,比较新节点的值与当前节点的值:
    如果新节点的值小于当前节点的值,则移动到左子树。
    如果新节点的值大于当前节点的值,则移动到右子树。
  4. 重复步骤3,直到找到合适的插入位置。
public void insert(int val) {if (root == null) {root = new TreeNode(val);return;}TreeNode cur = root;TreeNode parent = null;while (cur != null) {if (cur.val < val) {parent = cur;cur = cur.right;} else if (cur.val > val) {parent = cur;cur = cur.left;} else {return;}}if (parent.val < val) {parent.right = new TreeNode(val);} else {parent.left = new TreeNode(val);}}

1.2.3 删除

二叉搜索树的删除操作较为复杂。

  1. 查找要删除的节点:从根节点开始,找到要删除的节点及其父节点。
  2. 删除节点:
    1. 要删除的节点没有左子节点:
      如果要删除的节点是根节点,直接将根节点设为其右子节点。
      否则,更新父节点的指针,将其指向要删除节点的右子节点。
    2. 要删除的节点没有右子节点:
      如果要删除的节点是根节点,直接将根节点设为其左子节点。
      否则,更新父节点的指针,将其指向要删除节点的左子节点。
    3. 要删除的节点有两个子节点:
      找到要删除节点的后继节点(右子树中最小的节点)。
      用后继节点的值替代要删除节点的值。
      删除后继节点,更新其父节点的指针。
public void remove(int val) {TreeNode cur = root;TreeNode parent = null;while (cur != null) {if (cur.val < val) {parent = cur;cur = cur.right;} else if (cur.val > val) {parent = cur;cur = cur.left;}else {removeNode(parent,cur);return;}}}private void removeNode(TreeNode parent, TreeNode cur) {if (cur.left == null){if(cur == root){root = cur.right;}else if(cur == parent.left){parent.left = cur.right;}else{parent.right = cur.right;}}else if (cur.right == null){if(cur == root){root = cur.left;}else if(cur == parent.left){parent.left = cur.left;}else{parent.right = cur.left;}}else{TreeNode target = cur.right;TreeNode targetParent = cur;while(target.left != null){targetParent = target;target = target.left;}if (target == targetParent.left){targetParent.left = target.right;}else{targetParent.right = target.right;}}}

2. Map

2.1 Map的概念

Map是一个接口类,是一种键值对的集合,用于存储键值对的映射关系。该类存储的是<K,V>结构的键值对。
Map接口定义了一系列方法,用于操作键值对,包括插入、删除、获取和遍历等操作。在Map中,每个键对应一个值,键(K)是唯一的,值(V)可以重复。

2.2 Map接口内部的Entry接口(Map.Entry<K, V>)

Map.Entry接口表示Map中的一个键值对(entry),它是Map接口的内部接口。Map.Entry接口定义了操作键值对的方法,允许访问键和值,以及对它们进行操作。
Map.Entry接口包含以下常用方法:

  1. getKey(): 返回该键值对中的键。
  2. getValue(): 返回该键值对中的值。
  3. setValue(V value): 设置该键值对中的值为指定的值。

2.3 Map的常用方法

  1. V get(Object key):
    根据指定的键获取对应的值。如果键不存在,则返回 null。
  2. V getOrDefault(Object key, V defaultValue):
    根据指定的键获取对应的值。如果键不存在,则返回默认值 defaultValue。
  3. V put(K key, V value):
    将指定的键值对插入到 Map 中。如果键已经存在,则更新对应的值,并返回旧值。
  4. V remove(Object key):
    根据指定的键删除对应的键值对,并返回被删除的值。如果键不存在,则返回 null。
  5. Set keySet():
    返回 Map 中所有键的集合。
  6. Collection values():
    返回 Map 中所有值的集合。
  7. Set<Map.Entry<K, V>> entrySet():
    返回 Map 中所有键值对的集合。
  8. boolean containsKey(Object key):
    判断 Map 中是否包含指定的键。
  9. boolean containsValue(Object value):
    判断 Map 中是否包含指定的值。

TreeMap示例代码:

public class MapExample {public static void main(String[] args) {Map<String, Integer> map = new TreeMap<>();// putmap.put("one", 1);map.put("two", 2);// getSystem.out.println("Value for key 'one': " + map.get("one")); // 1// getOrDefaultSystem.out.println("Value for key 'three' (default 0): " + map.getOrDefault("three", 0)); // 0// removeSystem.out.println("Removed value for key 'one': " + map.remove("one"));// 1// keySetSet<String> keys = map.keySet();System.out.println("Keys: " + keys); // [two]// valuesCollection<Integer> values = map.values();System.out.println("Values: " + values); // [2]// entrySetSet<Map.Entry<String, Integer>> entries = map.entrySet();System.out.println("Entries: " + entries); // [two=2]// containsKeySystem.out.println("Contains key 'two': " + map.containsKey("two")); // true// containsValueSystem.out.println("Contains value 2: " + map.containsValue(2)); // true}
}

3. Set

3.1 Set 概念

Set 是 Java 集合框架中的一个接口,它表示一个不包含重复元素的集合。Set 接口继承自 Collection 接口,相较于Map不同的是它只存储了Key。

3.2 Set常见方法

  1. boolean add(E e):
    将指定的元素添加到集合中(如果该元素尚不存在于集合中)。如果集合中已存在该元素,则返回 false。
  2. void clear():
    移除集合中的所有元素。
  3. boolean contains(Object o):
    如果集合中包含指定的元素,则返回 true。
  4. Iterator iterator():
    返回集合中元素的迭代器。
  5. boolean remove(Object o):
    如果集合中存在指定的元素,则将其移除,并返回 true。
  6. int size():
    返回集合中的元素数量。
  7. boolean isEmpty():
    如果集合为空,则返回 true。
  8. Object[] toArray():
    返回包含集合中所有元素的数组。
  9. boolean containsAll(Collection<?> c):
    如果集合包含指定集合中的所有元素,则返回 true。
  10. boolean addAll(Collection<? extends E> c):
    将指定集合中的所有元素添加到集合中(如果这些元素尚不存在于集合中)。如果集合因调用此方法而发生更改,则返回 true。

TreeSet示例代码:

public class SetExample {public static void main(String[] args) {Set<String> set = new TreeSet<>();// addset.add("one");set.add("two");// containsSystem.out.println("Contains 'one': " + set.contains("one")); // true// iteratorIterator<String> iterator = set.iterator();System.out.print("Set elements: ");while (iterator.hasNext()) {System.out.print(iterator.next() + " "); // one two}System.out.println();// removeset.remove("one");System.out.println("After removing 'one', contains 'one': " + set.contains("one")); // false// sizeSystem.out.println("Set size: " + set.size()); // 1// isEmptySystem.out.println("Is set empty: " + set.isEmpty()); // false// toArrayObject[] array = set.toArray();System.out.print("Array elements: ");for (Object obj : array) {System.out.print(obj + " "); // two}System.out.println();// containsAllSet<String> otherSet = new HashSet<>();otherSet.add("two");System.out.println("Contains all elements of otherSet: " + set.containsAll(otherSet)); // true// addAllotherSet.add("three");set.addAll(otherSet);System.out.print("After addAll, set elements: ");for (String element : set) {System.out.print(element + " "); // two three}System.out.println();// clearset.clear();System.out.println("After clear, is set empty: " + set.isEmpty()); // true}
}

4. 总结

以上是对搜索树,Map,Set 的简单介绍,在后面会经常用到Map和Set接口,将会更深入的进行介绍。

http://www.dtcms.com/wzjs/262825.html

相关文章:

  • 淘宝网站建设费用常见的网站推广方式
  • 一学一做征文网站网站建设及网络推广
  • 湖南企业网站定制seod的中文意思
  • 什么网站做h5做得好时事新闻
  • 济源哪里做网站网站模板中心
  • 做图片网站 侵权杭州seo推广优化公司
  • 专业网站建设设计装饰seo网络营销技巧
  • 做营销型网站一般要多少钱seo是什么职位简称
  • 中国商标查询seo搜索引擎实战详解
  • 电脑公司网站源码重庆seo职位
  • 山东建设厅网站是什么全网推广网站
  • 南昌集团制作网站设计windows优化大师有毒吗
  • 石家庄网站托管公司网络营销的职能有哪些
  • 找个美工做淘宝网站需要多少钱网络维护培训班
  • 服务器 打开网站iis7百度爱采购排名
  • 汕尾建设网站百度平台客服人工电话
  • 做一个网站维护多少钱关键词分析
  • javaweb做商业网站百度地图收录提交入口
  • 凡科网站内容怎么做效果好网络营销是学什么的
  • 做公司网站需要准备什么网络推广公司有多少家
  • 北京专业的网站ui设计公司网页界面设计
  • 新泰网站定制企业seo网站推广
  • 做食材的网站如何推销网站
  • 网络规划设计包括哪些内容湖南有实力seo优化哪家好
  • 看英语做游戏的网站平台接广告在哪里接的
  • 东莞市建设工程信息服务协会沈阳专业seo关键词优化
  • 国际贸易相关网站淘宝推广怎么推
  • 网站开发 .net易推客app拉新平台
  • 电商 网站 备案什么是seo搜索
  • wordpress代码修改用户权限无线网络优化是做什么的