标签:
最近项目上遇到了,要排序数据库中的日期,查了一下java的api发现Set接口可以实现自己的效果,研究了一下
Set接口
Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0
自然排序是根据集合元素的大小,以升序排列,如果要定制排序,应该使用Comparator接口,实现 int compare(T o1,T o2)方法
android测试程序:
package com.example.zzset; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { Set<String> sL=new LinkedHashSet<String>(); Set<String> sH=new HashSet<String>(); Set<String> sT=new TreeSet<String>(); String userName = "2016,2013,2012,2011,2011,2014,2015,2016"; TextView textsL; TextView text1; TextView textsH; TextView textsT; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textsL = (TextView)this.findViewById(R.id.text); text1 = (TextView)this.findViewById(R.id.textView1); textsH = (TextView)this.findViewById(R.id.textView2); textsT = (TextView)this.findViewById(R.id.textView3); String[] uerNameS=userName.split(","); for(String name:uerNameS){ sL.add(name); } textsL.setText("textsL-->"+sL.toString()); String[] uerNameSH=userName.split(","); for(String name:uerNameSH){ sH.add(name); } textsH.setText("textsH-->"+sH.toString()); String[] uerNameST=userName.split(","); for(String name:uerNameST){ sT.add(name); } textsT.setText("textsT-->"+sT.toString()); StringBuffer sb=new StringBuffer(); for(String str:sL){ sb.append(str).append(","); } text1.setText("textsL重新拼接-->"+sb); } }测试结果
结果可以看出
LinkedHashSet 去掉重复的元素,元素位置不变
HashSet 去掉重复的元素,元素位置变动
TreeSet
去掉重复的元素,排序后输出
参考:http://www.cnblogs.com/Terry-greener/archive/2011/12/02/2271707.html
标签:
原文地址:http://blog.csdn.net/h378588270/article/details/44938315