Couchbase lite中的条件

时间:2015-12-14 13:10:51

标签: android couchbase couchbase-lite couchbase-view

我在Couchbase Lite中遇到了一些逻辑问题。这是我的数据库数据,如下所示

"3 step", 50.00, 4, "step"
"3 step", 50.00, 3, "step"
"3 step", 50.00, 3, "step"
"3 step", 50.00, 4, "step"
"3 step", 50.00, 7, "step"
"3 step", 50.00, 2, "step"
"3 step", 50.00, 2, "step"
"3 step", 50.00, 1, "step"
"3 step", 50.00, 2, "step"
"3 step", 50.00, 3, "step"

4,3,3,4,7这一天的这一步 图4是开始步骤7的结束步骤。

哪个>超过5是结束步骤,下一步是开始步骤 我怎样才能获得开始步骤和结束步骤值?

我尝试过如下

 while (rowEnum.hasNext()) {
     Document gpsData = rowEnum.next().getDocument();
     int stepDiff = (int) gpsData.getProperty("stepdiff");
     if (start){
         startStepArray.add((String) gData.getProperty("stepsDiff"));
         start = false;
     }
     if (diffTime > 5) {
         endStepArray.add((String) gData.getProperty("stepsDiff"));
         start = true;
     }
}

但如果没有> 5

,这个逻辑将无效

有人可以指导我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我不完全确定你的问题是什么,但只是将这个简单的例子放在一起似乎工作正常。

数据包装器对象

class Document {
    private String s1, s4;
    private double d2;
    private int i3;

    public Document(String arg0, double arg1, int arg2, String arg3) {
        this.s1 = arg0;
        this.d2 = arg1;
        this.i3 = arg2;
        this.s4 = arg3;
    }

    public int getStepDiff() {
        return this.i3;
    }
}

驱动程序类

public static void main(String[] args) {
    List<Document> lst = new ArrayList<>();
    lst.add(new Document("3 step", 50.00, 4, "step"));
    lst.add(new Document("3 step", 50.00, 3, "step"));
    lst.add(new Document("3 step", 50.00, 3, "step"));
    lst.add(new Document("3 step", 50.00, 4, "step"));
    lst.add(new Document("3 step", 50.00, 7, "step"));
    lst.add(new Document("3 step", 50.00, 2, "step"));
    lst.add(new Document("3 step", 50.00, 2, "step"));
    lst.add(new Document("3 step", 50.00, 1, "step"));
    lst.add(new Document("3 step", 50.00, 2, "step"));
    lst.add(new Document("3 step", 50.00, 3, "step"));
    Iterator<Document> rowEnum = lst.iterator();

    /** Your logic starts here **/
    boolean start = true;
    List<String> startStepArray = new ArrayList<>();
    List<String> endStepArray = new ArrayList<>();

    while (rowEnum.hasNext()) {
        Document gpsData = rowEnum.next();
        int stepDiff = gpsData.getStepDiff();

        if (start) {
            startStepArray.add(String.valueOf(gpsData.getStepDiff()));
            start = false;
        }

        if (stepDiff > 5) {
            endStepArray.add(String.valueOf(gpsData.getStepDiff()));
            start = true;
        }
    }

    System.out.println(startStepArray); // [4, 2]
    System.out.println(endStepArray); // [7]
}

如果所有数据都小于或等于5(比如7是3)并且您希望最后一个文档是结束步骤,则可以更改这一行来执行此操作。

if (stepDiff > 5 || !rowEnum.hasNext()) {

然后你会有一个[4]的开始步骤,以及[3]的结束步骤。或者,保留7,开始步骤为[4, 2],结束步骤为[7, 3]