`
jhyimu2005
  • 浏览: 181878 次
  • 性别: 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]}
分享到:
评论

相关推荐

    javaSE代码实例

    17.1.3 自定义尺寸固定线程池的使用 375 17.1.4 单任务线程池的使用 377 17.1.5 可变尺寸线程池的使用 378 17.1.6 延迟线程池的使用 380 17.1.7 使用自定义参数的线程池 381 17.2 有返回值的线程调用 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例...

    InsightDataEngineeringCodingChallenge:我的2015年Insight数据工程编码挑战解决方案

    更详细地讲,我将所有文件作为字符串流读取,然后使用TreeMap集合存储唯一键值对,并使用Treeset集合使结果保持排序。 在算法渐近分析方面,查找的时间复杂度为O(logN) ,其中N为单词数,空间复杂度为O(N) 。 得到...

    Java开发技术大全 电子版

    11.2.6有序树(TreeSet)使用示例349 11.2.7有序树映射类(TreeMap)使用示例353 11.2.8枚举(Enum)使用示例355 11.2.9枚举集(EnumSet)使用示例358 11.3常用算法361 11.3.1Collections中的简单算法361 ...

    疯狂JAVA讲义

    10.4.2 自定义异常类 371 10.4.3 catch和throw同时使用 371 10.4.4 异常链 373 10.5 Java的异常跟踪栈 374 10.6 异常处理规则 376 10.6.1 不要过度使用异常 377 10.6.2 不要使用过于庞大的try块 378 10.6.3 ...

    Java JDK实例宝典

    LinkedHashSet和TreeSet 4. 10 列表. 集合与数组的互相转换 4. 11 HashMap. Hashtable. LinkedHashMap和TreeMap 4. 12 对Map排序 4. 13 Properties属性文件 第5章 字符串 5. 1 使用String ...

    java基础案例与开发详解案例源码全

    11.2.3 实现类TreeSet272 11.3 List接口实现类277 11.3.1 实现类ArrayList277 11.3.2 实现类LinkedList279 11.3.3 实现类Vector281 11.4 Map接口283 11.4.1 实现类HashMap284 11.4.2 实现类LinkedHashMap285 11.4.3 ...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics