区域元素获取_NavigableSet
很多时候我们都需要对问题结果进行策略性整理方可符合要求;常见排行,有序等等。
这边有个问题是试图从一堆数据中找到符合条件的前后 10 个数据, 条件是与指定的值接近的前后 10 个。设想吧
如果这一堆数据是有序的就好了。
如果上面的满足了, 能直接取道我自己元素的位置就好了。这样的话。 index++ 和 index-- 分别取 10 次就 ok 了。
于是,决定用 NavigableSet<E> 结构。 获取符合条件的区间, 分别执行 higher(E), lower(E) 即可。
importjava.util.Collections;importjava.util.Comparator;importjava.util.LinkedList;importjava.util.List;importjava.util.NavigableSet;importjava.util.TreeSet;importorg.apache.commons.lang.ArrayUtils;publicclassSortedSetTest{publicstaticvoidmain(String[]args){NavigableSet<Temp>lifePriceTeamSet=newTreeSet<Temp>();lifePriceTeamSet.add(newTemp(3,"a"));lifePriceTeamSet.add(newTemp(1,"b"));lifePriceTeamSet.add(newTemp(5,"c"));lifePriceTeamSet.add(newTemp(4,"d"));lifePriceTeamSet.add(newTemp(9,"c"));lifePriceTeamSet.add(newTemp(2,"d"));Temptemp=lifePriceTeamSet.higher(newTemp(6,"g"));...System.out.println();temp=lifePriceTeamSet.lower(newTemp(6,"g"));...}staticclassTempimplementsComparable<Temp>{privateintid;privateStringname;publicTemp(intid,Stringname){this.id=id;this.name=name;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}@OverridepublicStringtoString(){return"Temp[id="+id+",name="+name+"]";}@OverridepublicintcompareTo(Tempo){if(this.getId()>o.getId()){return-1;}elseif(this.getId()==o.getId()){return0;}else{return1;}}}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。