热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中TreeSet的排序机制及应用

本文探讨了Java集合框架中的TreeSet类,重点介绍了其自然排序与定制排序的功能。通过实现Comparator接口,可以轻松地对TreeSet进行降序或其他特定顺序的排序。
Java中TreeSet的排序机制及应用

1. TreeSet的基本排序方式


TreeSet是Java集合框架中的一个重要组成部分,它不仅能够存储无重复的元素,还能保证这些元素处于有序状态。TreeSet支持两种主要的排序方式:自然排序和定制排序。默认情况下,TreeSet会根据元素的自然顺序进行排序,即实现了Comparable接口的类的对象可以自动按照它们的自然顺序排列。


2. 实现定制排序


对于需要特定排序规则的情况,如降序排列,可以通过实现Comparator接口来完成。此接口包含一个核心方法:int compare(T o1, T o2),该方法决定了两个对象之间的相对顺序。为了使TreeSet使用定制的排序规则,必须在创建TreeSet实例时传入一个实现了Comparator接口的对象。


3. 示例代码


下面是一个简单的示例,展示了如何使用Comparator接口来自定义降序排序:


package com.hellojava.entity;

import java.util.Comparator;

public class OrderNum implements Comparator {

@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}

接下来,我们将在一个Servlet中利用这个自定义的排序器来处理用户输入的数据,并将结果以指定的顺序返回给客户端:


package com.hellojava.servlet;

import java.io.IOException;
import java.util.Iterator;
import java.util.TreeSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.hellojava.entity.OrderNum;

public class LoginServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String number = request.getParameter("number");
String order = request.getParameter("order");
String[] str1 = number.split(",");
TreeSet treeSet = null;
if ("up".equals(order)) {
treeSet = new TreeSet<>();
} else if ("down".equals(order)) {
treeSet = new TreeSet<>(new OrderNum());
}
for (String s : str1) {
treeSet.add(s);
}
request.getSession().setAttribute("tr", treeSet);
response.sendRedirect("index.jsp");
}
}

前端页面设计包括一个简单的表单,允许用户输入数字序列并选择排序方式:



<%@ page language="java" cOntentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>










升序
降序






最后,index.jsp页面负责展示排序后的结果:



<%@ page language="java" cOntentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>








${t}






推荐阅读
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文将详细探讨Linux pinctrl子系统的各个关键数据结构,帮助读者深入了解其内部机制。通过分析这些数据结构及其相互关系,我们将进一步理解pinctrl子系统的工作原理和设计思路。 ... [详细]
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 通过生动有趣的顺口溜,帮助孩子们轻松记住各种运动、服饰、自然景物、星期和食物的英文单词。这些口诀不仅朗朗上口,还能加深对单词的记忆。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • PHP 实现多级树形结构:构建无限层级分类系统
    在众多管理系统中,如菜单、分类和部门等模块,通常需要处理层级结构。为了高效管理和展示这些层级数据,本文将介绍如何使用 PHP 实现多级树形结构,并提供代码示例以帮助开发者轻松实现无限分级。 ... [详细]
author-avatar
最佳乔海燕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有