`
jhyimu2005
  • 浏览: 184399 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
社区版块
存档分类
最新评论

如何使用TreeSet的自定义功能

 
阅读更多
之前一直都知道TreeSet是具有排序功能的集合,可是一直都没有使用过,一直使用List,把第一次使用的方法记录下来
treeSet的自定义排序
首先所存对象要实现接口Comparable,并实现此接口中的方法compareTo 在这个函数中定义你所期望的排序方式,有一点不要忘记就是重写toString方法,不然会是十六进制的乱码


package com.founder.ids.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.StringUtils;

@Entity
@Table(name="SURVEY_ITEM")
public class SurveyItem implements Serializable,Comparable<SurveyItem> {

private static final long serialVersionUID = 1L;

@Transient
private List<SurveyOption> surveyOptions;

@Transient
private List<PollText> surveryTexts;

@Id
@Column(name="ID",columnDefinition="NUMBER|调查项标识",length=5,nullable=false)
private Long id;

@Column(name="DESCRIPTION",columnDefinition="VARCHAR2|调查描述",length=500,nullable=false)
private String description;

@Column(name="LABEL_TYPE_CODE",columnDefinition="VARCHAR2|创建标签的类型编码",length=20,nullable=true)
private String labelTypeCode;

@Column(name="SURVEY_ID",columnDefinition="NUMBER|调查表ID",length=11,nullable=true)
private Long surveyId;

@Transient
private String pollOptionValue;

public Long getId() {
return this.id;
}

public void setId(Long id) {
this.id = id;
}

public String getDescription() {
return this.description;
}

public void setDescription(String description) {
this.description = description;
}

public String getLabelTypeCode() {
return labelTypeCode;
}

public void setLabelTypeCode(String labelTypeCode) {
this.labelTypeCode = labelTypeCode;
}

public Long getSurveyId() {
return this.surveyId;
}

public void setSurveyId(Long surveyId) {
this.surveyId = surveyId;
}

public List<SurveyOption> getSurveyOptions() {
if(null == surveyOptions || surveyOptions.isEmpty())
return new ArrayList<SurveyOption>();
for (SurveyOption surveyOption : surveyOptions) {
surveyOption.setItemId(id);
}
return surveyOptions;
}

public void setSurveyOptions(List<SurveyOption> surveyOptions) {
this.surveyOptions = surveyOptions;
}

public List<PollText> getSurveryTexts() {
return surveryTexts;
}

public void setSurveryTexts(List<PollText> surveryTexts) {
this.surveryTexts = surveryTexts;
}

public String getPollOptionValue() {
return pollOptionValue;
}

public void setPollOptionValue(String pollOptionValue) {
this.pollOptionValue = pollOptionValue;
}

/**
* is empty
*/
public boolean isEmpty() {

if(StringUtils.isEmpty(this.getDescription())
|| StringUtils.isEmpty(getLabelTypeCode())
|| isEmptyOption()){
return true;
}

return false;
}

private boolean isEmptyOption(){
for(SurveyOption optionOne: this.getSurveyOptions()){
if(null == optionOne || optionOne.isEmpty()){
return true;
}
}

return false;
}

public String toHtml() {
StringBuilder sb = new StringBuilder();

if(this.getLabelTypeCode().equalsIgnoreCase("TEXT")){
generateTextHtml(sb);
}else if(this.getLabelTypeCode().equalsIgnoreCase("RADIO")){
generateRadioHtml(sb);
}else if(this.getLabelTypeCode().equalsIgnoreCase("CHECKBOX")){
generateCheckboxHtml(sb);
}

return sb.toString();
}

private void generateCheckboxHtml(StringBuilder sb) {
StringBuilder sbTmp = new StringBuilder();
for(SurveyOption optionOne: this.getSurveyOptions()){
sbTmp.append("&nbsp;&nbsp;<input type=\"checkbox\" value=\""+optionOne.getId()+"\" name=\"chk_"+this.getSurveyId()+"_"+this.getId()+"_"+optionOne.getId()+"\" />&nbsp;&nbsp;"+optionOne.getItem());
}

sb.append("<tr><td>"+this.getDescription()+"</td><td>" +sbTmp.toString() +"</td></tr>");
}

private void generateRadioHtml(StringBuilder sb) {
StringBuilder sbTmp = new StringBuilder();
for(SurveyOption optionOne: this.getSurveyOptions()){
sbTmp.append("&nbsp;&nbsp;<input type=\"radio\" value=\""+optionOne.getId()+"\" name=\"radio_"+this.getSurveyId()+"_"+this.getId()+"\" />&nbsp;&nbsp;"+optionOne.getItem());
}

sb.append("<tr><td>"+this.getDescription()+"</td><td>" +sbTmp.toString() +"</td></tr>");
}

private void generateTextHtml(StringBuilder sb) {
sb.append("<tr><td>"+this.getDescription()+"</td><td><textarea name=\"text_"+this.getSurveyId()+"_"+this.getId()+"\"></textarea></td></tr>");
}

[b][b]//重写toString()方法,因为如果不重写,打印出来的是16进制代码
@Override
    public String toString() {
        return id + " " + description;
    }

//使用treeSet时按照 主键的升序排序
@Override
public int compareTo(SurveyItem o) {
return (int) (this.id - o.id);
}
[/b][/b]}
分享到:
评论

相关推荐

    javaTreeSet实现图书管理系统

    使用`TreeSet`的`contains()`方法查找特定书籍是否已被借出,如果在持卡人的`TreeSet`中找到,就表示已被借出。遍历持卡人集合,找出借阅过这本书的所有记录。 5. **查询借书卡的借出记录** 遍历持卡人`TreeSet`...

    HashSet和TreeSet_围墙之外

    4. 允许的元素:两者都不允许重复,但HashSet允许null,而TreeSet通常不允许null(使用自定义Comparator可以实现)。 在选择使用HashSet还是TreeSet时,需要根据实际需求来决定。如果需要快速的插入和查找,且不...

    java 集合框架(TreeSet练习)

    例如,创建`TreeSet`,添加不同类型的数据,比较不同类型的排序,使用比较器,以及如何在实际项目中有效地利用`TreeSet`的功能。学习者将通过这些练习掌握`TreeSet`的使用,并能够灵活地将其应用到自己的代码中。 ...

    (TreeSet) s.subSet(608, true, 611, true)

    `subSet()`方法是TreeSet提供的一个功能,用于获取集合的一个子集。 在描述中,"(TreeSet) s.subSet(608, true, 611, true)"同样指向了这个特定的方法调用。`s.subSet(e1, inclusive1, e2, inclusive2)`方法用于...

    HashSet和TreeSet.doc

    2. 如果需要保持元素的特定顺序,或者执行范围查询,那么应该选择 TreeSet,因为它提供了排序功能。 3. 对于性能敏感的应用,如果不需要排序且能接受无序的迭代顺序,HashSet 通常是更好的选择,因为它在大多数操作...

    day18-集合-中(HashSet&TreeSet&比较器).zip

    在Java编程语言中,集合框架是处理对象组的重要工具,其中`HashSet`和`TreeSet`是两种常见的接口实现类,分别提供了不同的功能和性能特性。本教程将深入探讨这两个集合类以及它们与比较器(Comparator)的关系。 ...

    浅谈java中的TreeMap 排序与TreeSet 排序

    总结,`TreeMap` 和 `TreeSet` 提供了强大的排序功能,它们通过红黑树保证了高效的数据操作,并允许开发者通过自定义比较器实现复杂的数据排序需求。在设计数据结构和算法时,了解并合理运用这些特性可以极大地提升...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了,value&gt;按value排序”是一个...

    JavaSE专题-Set集合.doc

    在使用Set集合时,需要掌握的一些小技巧,例如如何自动生成hashcode和equals方法,如何使用TreeSet的排序功能,如何使用LinkedHashSet的有序功能等。 总结 Set集合是JavaSE中的一种重要数据结构,包括HashSet、...

    bootstrap框架下带搜索功能的下拉树插件.zip

    在Bootstrap的样式基础上,它提供了节点展开/折叠、节点选择、自定义图标等特性。在这个上下文中,`bootstrap-treeview`可能被用来呈现具有层级关系的数据,如部门结构或者文件系统,用户可以通过点击节点来展开或...

    SelectCityDome仿美团网,探索ListView的A-Z字母排序功能实现选择省份或者城市AndroidStudio版本已修改为23.zip

    如果数据量较大,还可以考虑使用TreeSet等有序集合,它们在插入数据时就自动保持排序。 接着,为了实现快速跳转到特定字母部分的功能,项目可能包含了一个侧滑菜单或者顶部字母栏。用户点击字母时,ListView会滚动...

    金陵科技学院软件工程学院大二上Java高级1203Set.docx

    在Java编程语言中,`Set`接口是集合框架的一部分,它代表了不允许有重复元素的集合。本例中,我们探讨了两种实现`Set`接口的类:`...理解这两个数据结构的特性和使用方式对于编写高效、功能丰富的Java程序至关重要。

    去掉list中的重复对象

    对于复杂的数据结构,可能还需要结合其他数据结构,如TreeSet或LinkedHashSet,以及使用更高级的流操作,如`filter()`和`sorted()`,以满足特定的需求。总之,理解和掌握这些知识对于任何Java开发者来说都是非常重要...

    java中tree的实现

    在Java中,我们可以使用多种方式来实现树,包括但不限于自定义类、Java集合框架中的`TreeSet`、`TreeMap`以及`java.util.TreeNode`。下面我们将详细探讨这些实现方法。 首先,自定义类是创建树结构的基本方式。通常...

    红黑树算法实现

    红黑树是一种自平衡的二叉查找树,它的设计目标是在进行插入、...TreeSet通过内部的TreeMap来保存元素,实现自动排序的功能,提供了Set接口的方法支持。理解红黑树的原理对于优化Java程序中的数据结构使用至关重要。

    Java实验指导6基础类库的应用

    `TreeSet`提供了多种构造方法,如无参构造器创建空集合,带Collection参数的构造器复制传入集合的元素,以及带Comparator参数的构造器自定义排序规则。除了基本的添加、删除、查找操作,`TreeSet`还支持迭代器进行...

    JAVA TREE

    - Java开发工具如Eclipse和IntelliJ IDEA提供了源码查看功能,便于开发者直接查看和学习`TreeMap`和`TreeSet`的实现。 - 使用调试工具可以观察树在不同操作下的状态,帮助理解其内部工作原理。 6. **应用场景** ...

    Java集合Collection、List、Set、Map使用详解

    TreeSet则实现了SortedSet接口,内部使用红黑树数据结构,保证元素自动排序。 **Map接口** Map接口不同于Collection,它存储的是键值对。Map接口不继承Collection,因为它不是单一元素的容器,而是键值对的容器。...

    Java软件开发实战 Java基础与案例开发详解 11-3 Set接口实现类 共19页.pdf

    ### Java软件开发实战:Java基础与案例...`HashSet`适用于需要高性能查找的场景,`LinkedHashSet`保持了元素的插入顺序,而`TreeSet`则提供了排序功能。在实际项目开发中,根据需求选择合适的`Set`实现类是非常重要的。

    数组和集合的学习笔记

    - 使用场景:需要对集合中的元素进行排序时使用TreeSet。 - 示例代码: ```java TreeSet&lt;String&gt; treeSet = new TreeSet(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Cat"); System.out....

Global site tag (gtag.js) - Google Analytics