set集合中有一些数据,只用到最后几个。找的方法是全部遍历出来,,怎么只取到最后几个数据
package test;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
/**
@此类的作用
*/
public class Test {
public static void main(String[] args){
String date="20170105";
List list=new ArrayList();
for (int i=0;i list.add(date);
date=getPreDay(date);
}
Set set=new TreeSet(list);
list = getListDate(set, "20170101");
for (int i = 0,len=list.size(); i < len; i++) {
System.out.print(list.get(i)+"\t");
}
}
public static List getListDate(Set set,String date){
List list=new ArrayList();
String str="";
if(set!=null && date!=null){
Iterator it = set.iterator();
while(it.hasNext()){
str=it.next();
if(str!=null && Integer.parseInt(str)>=Integer.parseInt(date)){
list.add(str);
}
}
}
return list;
}
public static String getPreDay(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(dateStr));
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1);
return sdf.format(calendar.getTime());
} catch (Exception e) {
return "";
}
}
}
不知道你说的最后几个数字是什么意思。如果你是前序遍历,只需要最后几个数字,可以用后序遍历,那么这几个数字会最先被访问到。反之亦然。
你可以先装换数组,然后根据下表获取。不知道会省资源吗
1、你如果要找的几个数据是固定的话,可以将那几个数据放入自己新建的一个集合a中,然后再新建一个集合b
每遍历一次set取出数据的时候就遍历一次集合对比一下是不是你想要的数据,如果是的话就将这个数据放入新建的集合b中。
2、如果不是固定的,那也肯定有一些其他条件来判断是不是你想要的数据,新建一个集合b
每遍历一次set取出数据的时候就遍历一次集合对比一下是不是你想要的数据,如果是的话就将这个数据放入新建的集合b中。
3、只是纯粹的取出最后几个元素,遍历set集合前
获取set集合长度(即元素个数)。
int length =set集合长度;
int getNum =set集合长度想要获取多少个元素;
int num=0;//记录遍历次数
List list = new ArrayList();
Set set = new HashSet();
Iterator it = set.iterator();
while (it.hasNext()) {
num++;//遍历时让num自增
String str = it.next();
if(num>=(length-getNum)){
list.add(str);
}
System.out.println(str);
}