之前一直都知道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]//重写toString()方法,因为如果不重写,打印出来的是16进制代码
@Override
public String toString() {
return id + " " + description;
}
//使用treeSet时按照 主键的升序排序
@Override
public int compareTo(SurveyItem o) {
return (int) (this.id - o.id);
}[/b][/b]}
分享到:
相关推荐
使用`TreeSet`的`contains()`方法查找特定书籍是否已被借出,如果在持卡人的`TreeSet`中找到,就表示已被借出。遍历持卡人集合,找出借阅过这本书的所有记录。 5. **查询借书卡的借出记录** 遍历持卡人`TreeSet`...
4. 允许的元素:两者都不允许重复,但HashSet允许null,而TreeSet通常不允许null(使用自定义Comparator可以实现)。 在选择使用HashSet还是TreeSet时,需要根据实际需求来决定。如果需要快速的插入和查找,且不...
例如,创建`TreeSet`,添加不同类型的数据,比较不同类型的排序,使用比较器,以及如何在实际项目中有效地利用`TreeSet`的功能。学习者将通过这些练习掌握`TreeSet`的使用,并能够灵活地将其应用到自己的代码中。 ...
`subSet()`方法是TreeSet提供的一个功能,用于获取集合的一个子集。 在描述中,"(TreeSet) s.subSet(608, true, 611, true)"同样指向了这个特定的方法调用。`s.subSet(e1, inclusive1, e2, inclusive2)`方法用于...
2. 如果需要保持元素的特定顺序,或者执行范围查询,那么应该选择 TreeSet,因为它提供了排序功能。 3. 对于性能敏感的应用,如果不需要排序且能接受无序的迭代顺序,HashSet 通常是更好的选择,因为它在大多数操作...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`HashSet`和`TreeSet`是两种常见的接口实现类,分别提供了不同的功能和性能特性。本教程将深入探讨这两个集合类以及它们与比较器(Comparator)的关系。 ...
总结,`TreeMap` 和 `TreeSet` 提供了强大的排序功能,它们通过红黑树保证了高效的数据操作,并允许开发者通过自定义比较器实现复杂的数据排序需求。在设计数据结构和算法时,了解并合理运用这些特性可以极大地提升...
本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了,value>按value排序”是一个...
在使用Set集合时,需要掌握的一些小技巧,例如如何自动生成hashcode和equals方法,如何使用TreeSet的排序功能,如何使用LinkedHashSet的有序功能等。 总结 Set集合是JavaSE中的一种重要数据结构,包括HashSet、...
在Bootstrap的样式基础上,它提供了节点展开/折叠、节点选择、自定义图标等特性。在这个上下文中,`bootstrap-treeview`可能被用来呈现具有层级关系的数据,如部门结构或者文件系统,用户可以通过点击节点来展开或...
如果数据量较大,还可以考虑使用TreeSet等有序集合,它们在插入数据时就自动保持排序。 接着,为了实现快速跳转到特定字母部分的功能,项目可能包含了一个侧滑菜单或者顶部字母栏。用户点击字母时,ListView会滚动...
在Java中,我们可以使用多种方式来实现树,包括但不限于自定义类、Java集合框架中的`TreeSet`、`TreeMap`以及`java.util.TreeNode`。下面我们将详细探讨这些实现方法。 首先,自定义类是创建树结构的基本方式。通常...
在Java编程语言中,`Set`接口是集合框架的一部分,它代表了不允许有重复元素的集合。本例中,我们探讨了两种实现`Set`接口的类:`...理解这两个数据结构的特性和使用方式对于编写高效、功能丰富的Java程序至关重要。
对于复杂的数据结构,可能还需要结合其他数据结构,如TreeSet或LinkedHashSet,以及使用更高级的流操作,如`filter()`和`sorted()`,以满足特定的需求。总之,理解和掌握这些知识对于任何Java开发者来说都是非常重要...
红黑树是一种自平衡的二叉查找树,它的设计目标是在进行插入、...TreeSet通过内部的TreeMap来保存元素,实现自动排序的功能,提供了Set接口的方法支持。理解红黑树的原理对于优化Java程序中的数据结构使用至关重要。
`TreeSet`提供了多种构造方法,如无参构造器创建空集合,带Collection参数的构造器复制传入集合的元素,以及带Comparator参数的构造器自定义排序规则。除了基本的添加、删除、查找操作,`TreeSet`还支持迭代器进行...
- Java开发工具如Eclipse和IntelliJ IDEA提供了源码查看功能,便于开发者直接查看和学习`TreeMap`和`TreeSet`的实现。 - 使用调试工具可以观察树在不同操作下的状态,帮助理解其内部工作原理。 6. **应用场景** ...
TreeSet则实现了SortedSet接口,内部使用红黑树数据结构,保证元素自动排序。 **Map接口** Map接口不同于Collection,它存储的是键值对。Map接口不继承Collection,因为它不是单一元素的容器,而是键值对的容器。...
### Java软件开发实战:Java基础与案例...`HashSet`适用于需要高性能查找的场景,`LinkedHashSet`保持了元素的插入顺序,而`TreeSet`则提供了排序功能。在实际项目开发中,根据需求选择合适的`Set`实现类是非常重要的。
- 使用场景:需要对集合中的元素进行排序时使用TreeSet。 - 示例代码: ```java TreeSet<String> treeSet = new TreeSet(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Cat"); System.out....