java 集合框架-TreeSet练习

import java.util.*;
/*
练习:按照字符串长度排序。
字符串本身具备比较性,但是它的比较方式不是所需要的。这时就只能使用比较器
注意:在方式二中:
      int num=new Integer(str1.length()).compareTo(new Integer(str2.length()));
      此时num的值有三种可能。正数、负数、零。千万不要写下面的代码:
	  if(num==1)
		return 1;
	num不一定等于1。我们在函数中返回的0,1,-1只是代表三种情况:零,正数,负数。这个一定要注意。
*/
class MyCompare implements Comparator  //自定义比较器
{
	public int compare(Object obj1,Object obj2)
	{
		if(!(obj1 instanceof String) || !(obj2 instanceof String))
			throw new RuntimeException("不是字符串!");
		String str1=(String)obj1;
		String str2=(String)obj2;

		/*方式一
		if(str1.length()>str2.length())
			return 1;
		if(str1.length()==str2.length())
		{
			return str1.compareTo(str2);
		}
		return -1;
		*/
		/*方式二*/
		int num=new Integer(str1.length()).compareTo(new Integer(str2.length()));
		if (num==0)
		{
			return str1.compareTo(str2);
		}
		return num;
	}
}

//如果没有上面的自定义类,那么TreeSet会按照自然顺序进行排序(字符串的字母自然排序)
class TreeSetTest1
{
	public static void main(String[] args)
	{

		TreeSet ts=new TreeSet(new MyCompare());
		//TreeSet ts=new TreeSet();
		ts.add("abcd");
		ts.add("dgf");
		ts.add("aakuop");
		ts.add("po");
		ts.add("hello");
		ts.add("hello");
		ts.add("world");
		ts.add("werttif");
		ts.add("hello");

		Iterator it=ts.iterator();
		while(it.hasNext())
		{
			sop((String)it.next());
		}
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

时间: 2024-10-28 19:52:37

java 集合框架-TreeSet练习的相关文章

java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返回值有:负数,零,正数.分别表示小于,等于,大于 * 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法 * 元素定义时,需要实现Comparable接口 * */ 1 import java.util.Iterator; 2 import java.util.Tr

java 集合框架-TreeSet

/* TreeSet可以对Set集合中的对象进行排序: 原理,TreeSet在底层调用了Comparable接口的方法compareTo(). 所以,在使用TreeSet存储自定义对象时,要想实现自定义类对象的自然排序,需要类实现Comparable接口,并重写覆盖接口唯一的方法compareTo(). 需求: 往TreeSet集合中存储自定义对象学生. 想按照学生的年龄进行排序. 记住:排序时,当主要条件相同时,一定判断一下次要条件. 在本例中,出现了两个同学的年龄是一样的,如果不进行判断次要

Java集合框架总结(3)——TreeSet类的排序问题

Java集合框架总结(3)--TreeSet类的排序问题 TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序.(比较的前提:两个对象的类型相同). java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

JAVA集合框架

收藏 查看我的收藏 146有用+1 56 编辑 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的Web.Internet计算.从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet.集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口.接口的实

我所理解Java集合框架的部分的使用(Collection和Map)

所谓集合,就是和数组类似--一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接口,长虚线表示抽象类,实线表示类,箭头表示实现接口或者继承)(在网络上找的图,不知道原作者,侵权请联系我删除)(总之,关系很复杂,所以不用记得这个图,只是用来吓吓人而已的). 下面贴上个人理解之精简版之Collection(集)和Map(地图?暂且这么理解吧),话说思维导图蛮好用,以下是两幅思维导图

【Java集合源码剖析】Java集合框架

Java集合工具包位于package java.util下.包含了一些常用的数据结构,如数组.链表(单/双向).树.栈.队列.哈希表等. Java集合框架大致可分为五部分:List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Arrays.Collections). Java集合类的整体框架如下: 如图,Java集合类大致分为两大类:Collection和Map. Collection主要包括两部分:List和Set. List接口通常表示一个列表(数

java集合框架22

思想:在面向对象的思想里,一种数据结构被认为是一种容器.在本质上来讲是一个类,提供方法支持查找,插入和删除等等操作. Java集合框架支持以下俩种类型的容器: 存储一个元素集合,简称为集合Collection 存储键值对,称为图Map 集合collection 三种主要类型 : 规则集(set) , 线型表(List) , 队列(Queue) set: 存储一组不重复的数据 List: 存储由元素构成的有序集合 Queue: 存储先进先出方式处理的对象 细说Collection接口: 它是处理对

Java集合框架之泛型

广州疯狂软件教育Java培训,iOS培训分享 泛型:1.5版本以后出现的新特性.用于解决安全问题,是一个安全机制. 好处: 1.将运行时期出现问题ClassCaseException,转移到了编译时期. 2.方便与程序员解决问题.让运行时事情减少,安全. 3.避免了强制类型转换 泛型格式:通过<>来定义要操作的引用数据类型 什么时候写泛型: 在集合框架中和常见 只要见到<>就要定义泛型 import java.util.Comparator; import java.util.It