小编Sau*_*are的帖子

android livedata进行顺序调用

我正在使用Retrofit,实时数据.我的项目有一种情况,我必须进行网络调用.如果任何一个失败,它应该返回错误.

目前我有两个实时数据观察员来完成工作,这不是一个好方法,所以我想知道更好的方法或示例代码来处理这样的要求.

注意:我没有使用Rxjava.

查看代码基本逻辑

    String id = "items/1233"; //ID which has to to be deleted
    if (isCustomizedItem) {
        viewModel.deleteEvent(id);
    } else {
        viewModel.createCustomItems();
        viewModel.deleteEvent(id);
    }
Run Code Online (Sandbox Code Playgroud)

Livedata观察员

    viewModel.getItemDeleted().observe(this, serverResponse -> {
        if (serverResponse.status == Status.SUCCESS) {
            Timber.i("Successfully deleted");
        }
    });

    viewModel.itemCreated().observe(this, serverResponse -> {
        if (serverResponse.status == Status.SUCCESS) {
            Timber.i("new items added");
            //Again call delete for specific item
            viewModel.deleteEvent(id);
        }
    });
Run Code Online (Sandbox Code Playgroud)

Viewmodel代码

    createItems = Transformations.switchMap(eventData, (data) -> {
        if (canCreateItems(data)) {
            return AbsentLiveData.create();
        } else {
            return eventItemRepository.createItems();
        }
    });

    deleteItem …
Run Code Online (Sandbox Code Playgroud)

android mvvm retrofit android-livedata

10
推荐指数
1
解决办法
1412
查看次数

反向整数在java中没有重复数字

我的目标是在Java中反转整数而不重复数字如何提高代码的复杂性或是否存在良好/标准算法?

如果有重复数字,则应保留最后一位数字

public static void main(String[] args) {
    int n = -19890;
    System.out.println(reverseNumberWithoutDuplicate(n));
}

public static int reverseNumberWithoutDuplicate(int number) {
    boolean isNegative = (number < 0);
    number = isNegative ? number * -1 : number;

    Set<Character> lookup = new HashSet<>();

    StringBuffer sb = new StringBuffer();
    char[] digits = String.valueOf(number).toCharArray();
    for (int i = digits.length - 1; i >= 0; --i) {
        if (lookup.contains(digits[i])) {
            continue;
        }
        sb.append(digits[i]);
        lookup.add(digits[i]);
    }
    return isNegative ? Integer.parseInt(sb.toString()) * -1 : Integer.parseInt(sb.toString());
}
Run Code Online (Sandbox Code Playgroud)

预期产量:-981

java algorithm time-complexity

5
推荐指数
2
解决办法
527
查看次数