我以输入文件的形式给出时间间隔。
INPUT FILE
2 3 //First start time and second one end time
5 6
9 11
3 10
我想根据开始时间的基本情况对间隔进行排序,即
(2,3) , (3,10) ,(5,6) ,(9,11)
我是否必须制作此结构。或者它可以直接完成。 我的方法:
class Interval implements Comparable<Interval>{
private int start , end;
public Interval(int start , int end){
this.start = start;
this.end = end;
}
public int compareTo(Interval o) {
// TODO Auto-generated method stub
if(o==null)
return -1;
return start-o.start;
}
}
我没有得到它的输出。
有没有更好的方法
请帮帮我。
答案 0 :(得分:1)
此compareTo()
方法没有问题。似乎你不知道如何使用它。
你应该以这种方式使用它。
public class Interval implements Comparable<Interval>{
private int start , end;
public Interval(int start , int end){
this.start = start;
this.end = end;
}
public int compareTo(Interval o) {
if(o==null)
return -1;
return start-o.start;
}
@Override
public String toString() {
return "Interval{" +
"start=" + start +
", end=" + end +
'}';
}
}
现在该怎么用?
Interval interval1 = new Interval(2, 3);
Interval interval2 = new Interval(5, 6);
Interval interval3 = new Interval(9, 11);
Interval interval4 = new Interval(3, 10);
List<Interval> list = new ArrayList<>();
list.add(interval1);
list.add(interval2);
list.add(interval3);
list.add(interval4);
System.out.println(list);
Collections.sort(list);
System.out.println(list);
Out put:
[Interval{start=2, end=3}, Interval{start=5, end=6}, Interval{start=9, end=11}, Interval{start=3, end=10}]
[Interval{start=2, end=3}, Interval{start=3, end=10}, Interval{start=5, end=6}, Interval{start=9, end=11}]
答案 1 :(得分:0)
如果使用列表,您需要致电Collection.sort(list);
。您还可以使用SortedSet
或TreeMap
来对收藏品进行排序。
答案 2 :(得分:0)
您的compareTo()
方法有效。使用Collections.sort()
,你就可以了。
List<Interval> intervals = new ArrayList<Interval>();
intervals.add(new Interval(2, 3));
intervals.add(new Interval(5, 6));
intervals.add(new Interval(9, 11));
intervals.add(new Interval(3, 10));
Collections.sort(intervals);
答案 3 :(得分:0)
Integer类有一个比较函数,可以为你进行比较
class Interval implements Comparable<Interval>{
....
public int compareTo(Interval o) {
return Integer.compare(start, o.start);
}
}
答案 4 :(得分:0)
试试这个:
class Interval implements Comparable<Interval>{
private int start , end;
public Interval(int start , int end){
this.start = start;
this.end = end;
}
public int compareTo(Interval o) {
if(o==null)
return -1;
return Integer.compare(o.start, this.start);
}
}
public void test(){
Interval[] ar = new Interval[4];
ar[0] = new Interval(1,2);
ar[1] = new Interval(10,2);
ar[2] = new Interval(2,2);
ar[3] = new Interval(94,2);
Arrays.sort(ar);
for(int i=0, len=ar.length; i<len; i++){
System.out.println("( "+ar[i].start+" ,"+ar[i].end+")");
}
}