有一个项目是查出物流订单状态轨迹,由于状态可能重复往回走的情况,类似如下结构
List dataList = new ArrayList();
dataList.add("新建");
dataList.add("审核");
dataList.add("提交");
dataList.add("待完工");
dataList.add("待处理");
dataList.add("已接收");
dataList.add("已确认");
dataList.add("已分配");
dataList.add("已分配");
dataList.add("已分配");
dataList.add("配送中");
dataList.add("配送中");
dataList.add("已分配");
dataList.add("已分配");
dataList.add("配送中");
dataList.add("配送中");
现在想取到这样的结构,
List result = new ArrayList();
result.add("新建");
result.add("审核");
result.add("提交");
result.add("待完工");
result.add("待处理");
result.add("已接收");
result.add("已确认");
result.add("已分配");
result.add("配送中");
result.add("已分配");
result.add("配送中");
把相同阶段的状态去重操作,但是不同阶段的状态可以保留,请大神们给点思路!
记录当前阶段的状态?
遍历去除重复数据,每次添加时遍历list,如果没有的话就添加。
how about use LinkedList
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class TestLinkedList {
public static void main(String[] args) {
List<String> dataList = new ArrayList<String>();
dataList.add("新建");
dataList.add("审核");
dataList.add("提交");
dataList.add("待完工");
dataList.add("待处理");
dataList.add("已接收");
dataList.add("已确认");
dataList.add("已分配");
dataList.add("已分配");
dataList.add("已分配");
dataList.add("配送中");
dataList.add("配送中");
dataList.add("已分配");
dataList.add("已分配");
dataList.add("配送中");
dataList.add("配送中");
LinkedList<String> dataLinkedList = new LinkedList<String>();
boolean addedFirstElement = false;
for (int i = 0; i < dataList.size(); i++) {
if (!addedFirstElement) {
dataLinkedList.add(dataList.get(i));
addedFirstElement = true;
} else if (dataLinkedList.getLast() != dataList.get(i)) {
dataLinkedList.add(dataList.get(i));
}
}
for (int j = 0; j < dataLinkedList.size(); j++) {
System.out.println(dataLinkedList.get(j));
}
}
}
output
新建
审核
提交
待完工
待处理
已接收
已确认
已分配
配送中
已分配
配送中