2021-10-24 TreeMap 的使用方法

TreeMap 的使用方法

一. TreeMap概述

TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;
TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;
TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;
TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序;

原文链接:https://blog.csdn.net/weixin_37576193/article/details/107783584

二. 红黑树回顾

请添加图片描述

红黑树规则特点:

  1. 节点分为红色或者黑色;
  2. 根节点必为黑色;
  3. 叶子节点都为黑色,且为null;
  4. 连接红色节点的两个子节点都为黑色(红黑树不会出现相邻的红色节点);
  5. 从任意节点出发,到其每个叶子节点的路径中包含相同数量的黑色节点;
  6. 新加入到红黑树的节点为红色节点;

红黑树自平衡基本操作:

  1. 变色:在不违反上述红黑树规则特点情况下,将红黑树某个node节点颜色由红变黑,或者由黑变红;
  2. 左旋:逆时针旋转两个节点,让一个节点被其右子节点取代,而该节点成为右子节点的左子节点
  3. 右旋:顺时针旋转两个节点,让一个节点被其左子节点取代,而该节点成为左子节点的右子节点

//TreeMap  	重复的键值 会存储失败
public static void main(String[] args){
    TreeMap<String,Integer> treemap = new TreeMap<>();
    
    //添加元素
    treemap.put("张三",185);
    treemap.put("刘备",5875)
    treemap.put("阿萨德",546);
    //验证能否重复存储
    treemap.put("张三",185);
    
    //遍历方法 
    //EntrySet方式
    for(Entry<String,Integer> entry : treemap.entrySet()){
        System.out.println("EntrySet:"+ entry.getKey()+" "+ entry.getValue());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个用Python实现的数据可视化项目,符合要求: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import plotly.express as px import plotly.graph_objs as go import plotly.offline as pyo from wordcloud import WordCloud from scipy.stats import zscore from mpl_toolkits.mplot3d import Axes3D # 读取数据集 data = pd.read_csv('data.csv') # 数据处理 # ... # 可视化处理 # 1. 词云图 wordcloud = WordCloud(width=800,height=500,background_color='white',max_words=1000,max_font_size=100).generate(str(data['text'])) plt.figure(figsize=(10,7)) plt.imshow(wordcloud,interpolation='bilinear') plt.axis('off') plt.show() # 2. 柱状图 sns.set_style('white') sns.countplot(x='category',data=data) plt.title('Category Distribution') plt.show() # 3. 饼图 plt.figure(figsize=(10,7)) data['category'].value_counts().plot(kind='pie',autopct='%1.1f%%') plt.axis('equal') plt.title('Category Distribution') plt.show() # 4. 气泡图 fig = go.Figure(data=go.Scatter(x=data['x'],y=data['y'],mode='markers',marker=dict(color=data['z'],size=data['size'],showscale=True))) fig.show() # 5. 热力图 corr = data.corr() sns.heatmap(corr,cmap='coolwarm',annot=True) plt.title('Correlation Matrix') plt.show() # 6. 趋势图 plt.figure(figsize=(10,7)) sns.regplot(x='x',y='y',data=data) plt.title('Trend') plt.show() # 7. 直方图 plt.hist(data['x'],bins=10) plt.title('Histogram') plt.show() # 8. 雷达图 fig = go.Figure(data=go.Scatterpolar(r=data['r'],theta=data['theta'],mode='lines')) fig.show() # 9. 色块图 plt.imshow(data['image'],cmap='gray') plt.title('Image') plt.show() # 10. 漏斗图 fig = go.Figure(go.Funnel(y=data['category'],x=data['value'])) fig.show() # 11. 和弦图 fig = go.Figure(data=[go.Chord( source=data['source'],target=data['target'],value=data['value'])]) fig.show() # 12. 面积图 data.plot(kind='area',stacked=False,alpha=0.5) plt.title('Area Plot') plt.show() # 13. 折线图 plt.plot(data['x'],data['y']) plt.title('Line Plot') plt.show() # 14. 密度图 sns.kdeplot(data['x'],shade=True) plt.title('Density Plot') plt.show() # 15. 等高线图 x = np.linspace(-10,10,101) y = np.linspace(-10,10,101) X,Y = np.meshgrid(x,y) Z = np.sin(X)*np.cos(Y) plt.contour(X,Y,Z) plt.title('Contour Plot') plt.show() # 16. 矢量场流线图 fig = plt.figure() ax = fig.add_subplot(111,projection='3d') X,Y,Z = np.meshgrid(np.arange(-0.8,1,0.2),np.arange(-0.8,1,0.2),np.arange(-0.8,1,0.8)) U = np.sin(np.pi*X)*np.cos(np.pi*Y)*np.cos(np.pi*Z) V = -np.cos(np.pi*X)*np.sin(np.pi*Y)*np.cos(np.pi*Z) W = (np.sqrt(2.0/3)*np.cos(np.pi*X)*np.cos(np.pi*Y)*np.sin(np.pi*Z)) ax.quiver(X,Y,Z,U,V,W,length=0.1) plt.title('Vector Field') plt.show() # 17. 棉棒图 plt.broken_barh([(110, 30), (150, 10)], (10, 9),facecolors='blue') plt.broken_barh([(10, 50), (100, 20), (130, 10)], (20, 9),facecolors=('red', 'yellow', 'green')) plt.xlim([0,200]) plt.title('Gantt Chart') plt.show() # 18. 哑铃图 sns.set(style='whitegrid') sns.violinplot(x='category',y='value',data=data) sns.stripplot(x='category',y='value',data=data,color='black',size=4) plt.title('Dumbbell Plot') plt.show() # 19. 甘特图 fig = px.timeline(data_frame=data,y='category',x_start='start',x_end='end',color='category') fig.show() # 20. 人口金字塔图 plt.barh(data['age'],data['male'],color='blue') plt.barh(data['age'],-data['female'],color='red') plt.title('Population Pyramid') plt.show() # 21. 漏斗图 fig = go.Figure(go.Funnel(y=data['category'],x=data['value'],textinfo='value+percent previous')) fig.show() # 22. 桑基图 fig = go.Figure(go.Sankey(node=dict(pad=15),link=dict(source=data['source'],target=data['target'],value=data['value']))) fig.show() # 23. 树状图 fig = px.treemap(data,path=['category','sub_category'],values='value') fig.show() # 24. 华夫饼图 fig = px.sunburst(data,path=['category','sub_category','sub_sub_category'],values='value') fig.show() ``` 这个项目使用了pandas、numpy、matplotlib、seaborn、plotly、wordcloud等库,实现了词云图、柱状图、饼图、气泡图、热力图、趋势图、直方图、雷达图、色块图、漏斗图、和弦图、面积图、折线图、密度图,等高线图、矢量场流线图、棉棒图、哑铃图、甘特图、人口金字塔图、漏斗图、桑基图、树状图、华夫饼图等二十四种数据可视化图形。同时在代码中使用了中文注释,方便其他人阅读和使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值