之前一直都知道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(" <input type=\"checkbox\" value=\""+optionOne.getId()+"\" name=\"chk_"+this.getSurveyId()+"_"+this.getId()+"_"+optionOne.getId()+"\" /> "+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(" <input type=\"radio\" value=\""+optionOne.getId()+"\" name=\"radio_"+this.getSurveyId()+"_"+this.getId()+"\" /> "+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][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][/b]}
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(" <input type=\"checkbox\" value=\""+optionOne.getId()+"\" name=\"chk_"+this.getSurveyId()+"_"+this.getId()+"_"+optionOne.getId()+"\" /> "+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(" <input type=\"radio\" value=\""+optionOne.getId()+"\" name=\"radio_"+this.getSurveyId()+"_"+this.getId()+"\" /> "+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][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][/b]}