###问题描述及解决思路
去除重叠的弧段。有这样一些区间,两个弧段如果重叠,去除较小的那个。
package ellip.dt.missionplanning.taskMission;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class test33 {
public static void main(String[] args) {
List<ArrayList<Integer>> arcList=new ArrayList<>();
ArrayList<Integer> arc0 = new ArrayList<>();
Collections.addAll(arc0,1,3);
ArrayList<Integer> arc1 = new ArrayList<>();
Collections.addAll(arc1,2,5);
ArrayList<Integer> arc2 = new ArrayList<>();
Collections.addAll(arc2,4,9);
ArrayList<Integer> arc3 = new ArrayList<>();
Collections.addAll(arc3,10,12);
arcList.add(arc0);
arcList.add(arc1);
arcList.add(arc2);
arcList.add(arc3);
System.out.println(arcList);
List<ArrayList<Integer>> newarcList=new ArrayList<>();
int count=0;
for (int i = 0; i < arcList.size()-1; i++) {
ArrayList<Integer> before=arcList.get(i);
ArrayList<Integer> behind=arcList.get(i+1);
if(before.get(1)>behind.get(0)){
count=count+1;
if((before.get(1)-before.get(0))>(behind.get(1)-behind.get(0))){
newarcList.add(arcList.get(i));
}
else {
if(newarcList.contains(arcList.get(i))){
newarcList.remove(arcList.get(i));
newarcList.add(arcList.get(i+1));
}
else {
newarcList.add(arcList.get(i+1));
}
}
}
else {
if(i== arcList.size()-2){
newarcList.add(arcList.get(i+1));//如果不重叠,且i是最后一个弧段,还应把列表最后一个弧段加入
}
}
}
System.out.println(newarcList);
}
}