JAVA TreeSet集合存储 TreeMap集合存取 知识点[案例+代码+总结]

导读:本篇文章讲解 JAVA TreeSet集合存储 TreeMap集合存取 知识点[案例+代码+总结],希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

文章目录


前言

          TreeSet集合和HashSet集合的区别就是TreeSet集合是对元素进行排序的。相同点就是都是没有重复的元素。TreeMap集合和HashMap集合也是一样,区别都是Tree的是排序的,Hash是无序的。相同的也是以键值对的形式存储的。至于如何排序,下面我们一起来看内容。

 

一、TreeSet集合存储  

         1.案例描述

                练习目标

                       了解 TreeSet 集合的存储特点

                        掌握 TreeSet 集合的存储和迭代操作

                需求分析

                       TreeSet 是 Set 接口的另一个实现类,它内部采用平衡二叉树来存储元素,这样的结构可以保证TreeSet 集合中没有重复的元素,并且可以对元素进行排序。为了让初学者能熟悉 TreeSet 集合的使用,本案例通过向 TreeSet 集合添加元素并遍历集合元素来演示。

                设计思路(实现原理)
                        1) 编写一个类 Example11,定义一个 TreeSet 集合

                        2) 向 TreeSet 集合中添加一系列元素,其中有重复元素

                        3) 遍历输出 TreeSet 集合中所有的元素

        2.案例实现

                        Example11类代码:

package JHClass;

import java.util.*;
public class Example11 {
public static void main(String[] args) {
	TreeSet ts = new TreeSet();	//创建TreeSet集合
	ts.add("abc3");				//向集合中添加一系列元素,其中包括重复元素
	ts.add("abc2");
	ts.add("abc4");
	ts.add("aabbcc");
	ts.add("aabbcc");
	ts.add("abc1");
	Iterator it = ts.iterator();
	while (it.hasNext()) {		//使用Iterator迭代器遍历TreeSet集合元素
		System.out.println(it.next());
	}
}
}

                运行结果 

                ​​​​​​​        JAVA TreeSet集合存储 TreeMap集合存取 知识点[案例+代码+总结]

        3.案例总结

                TreeSet 内部采用平衡二叉树来存储元素,所谓二叉树就是说每个节点最多有两个子节点的有序树,每个节点及其子节点组成的树称为子树,通常左侧的子节点称为“左子树”,右侧的节点称为“右子树”,其中左子树上的元素应小于它的根结点,而右子树上的元素应大于它的根结点。二叉树中元素的存储结构如图

                 JAVA TreeSet集合存储 TreeMap集合存取 知识点[案例+代码+总结]

二、TreeMap集合存取

        

         1.案例描述

                练习目标

                       了解 TreeMap 集合的存储特点

                       掌握 TreeMap集合存储和迭代方法

                需求分析

                      TreeMap 集合用来存储键值映射关系,其中不允许出现重复的键。在 TreeMap 中是通过二叉树的原理来保证键的唯一性,因此 TreeMap 中所有的键是按照某种顺序排列的。为了熟悉 TreeMap 集合的使用,本案例将使用 TreeMap 集合获取一个字符串中每一个字母出现的次数,在实现这一功能的过程中掌握 TreeMap 集合存储和迭代方法。

                设计思路(实现原理)

                        1) 编写一个类 Example15,要获取字符串”cbxzbvavdvgd”中,每一个字母出现次数,先将字符串转化成数组

                        2) 定义一个 TreeMap 集合,字符出现的次数作为键,每一个字符作为值

                        3) 遍历字符数组,获取到每一个字符

                        4) 拿到每一个字符,到 TreeMap 集合中找对应的值,判断返回值是否为 NULL                         5) 如果返回值是 NULL,就将字符存储到 TreeMap 集合中,对应的键记为 1

                        6) 如果返回值不为 NULL,就将键值加 1,并重新将值(字符)和键(出现的次数)存入集合

                        7) 把 TreeMap 的元素拼接成一个字符串,输出结果

         2.案例实现

                 Example15类代码:

package JHClass;

import java.util.*;
public class Example15{
	      public static void main(String[] args) {
		         String s = "cbxzbvavdvgd";
	         // 把字符串变成字符数组。
		         char[] chs = s.toCharArray();
		    // 定义一个TreeMap集合
		         TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
		         // 遍历字符数组,获取到每一个字符。
		         for (char ch : chs) {
			         // 拿到该字符,到TreeMap集合中找对应的值
			         Integer i = tm.get(ch);
			         // 根据返回值是否为null。是:存储,把次数记录为1;否:把数据++,然后重写存储
			         if (i == null) {
				          tm.put(ch, 1);
			         } else {
				         i++;
				         tm.put(ch, i);
			         }
		         }
		         // 把TreeMap的数据拼接成一个字符串。
		         StringBuilder sb = new StringBuilder();
		              Set<Character> set = tm.keySet();
		              for (Character ch : set) {
			               Integer i = tm.get(ch);
			               sb.append(ch).append("(").append(i).append(")");
		              }
		              String result = sb.toString();
		          System.out.println(result);
	        }
}

                运行结果 

        ​​​​​​​        ​​​​​​​        JAVA TreeSet集合存储 TreeMap集合存取 知识点[案例+代码+总结]

 

        3.案例总结 

                1、在本案例中,演示了 TreeMap 集合中元素的存储和迭代方法与 HashMap 相同。从输出结果可以看出,TreeMap 集合中的元素是不重复的,并且按照值的自然顺序进行了排序。这是因为在 TreeMap 中是通过二叉树的原理来保证键的唯一性,这个 TreeSet 集合存储的原理一样,因此 TreeMap 中所有的键是按照某种顺序排列的。

                2、本案例中,在定义 TreeMap 集合时使用了泛型,即。它可以指定该类中方法操作的 数据类型,避免在集合存取时会产生的数据类型转化的错误。


总结

                TreeSet 集合、TreeMap 中是通过二叉树的原理来保证的唯一性,进而也进行了排序。它们和HashSet集合、HashMap集合不同点就是有无排序。这样也容易理解些。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114668.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!