小编Joo*_*oop的帖子

如何序列化对象并将其保存到Android中的文件?

假设我有一些简单的类,一旦它被实例化为一个对象,我希望能够将其内容序列化为一个文件,并通过稍后加载该文件来检索它......我不知道从哪里开始,如何将此对象序列化为文件需要做什么?

public class SimpleClass {
   public string name;
   public int id;
   public void save() {
       /* wtf do I do here? */
   }
   public static SimpleClass load(String file) {
       /* what about here? */
   }
}
Run Code Online (Sandbox Code Playgroud)

这可能是世界上最简单的问题,因为这在.NET中是一个非常简单的任务,但在Android中我很新,所以我完全迷失了.

file-io serialization android

124
推荐指数
4
解决办法
13万
查看次数

在java中将Boolean对象转换为字符串的最佳方法

我试图将布尔值转换为字符串类型...

Boolean b = true;
String str = String.valueOf(b);
Run Code Online (Sandbox Code Playgroud)

要么

Boolean b = true;
String str = Boolean.toString(b);
Run Code Online (Sandbox Code Playgroud)

以上哪一项会更有效率?

java boolean

103
推荐指数
2
解决办法
21万
查看次数

在C++和Java中只有一个返回值的原因是什么?

通常我会看一眼这个事实并接受它为"这就是轮子旋转的方式",但今天我想知道它来自何处:为什么一个函数只有一个返回(参考)值?

为什么不能,函数返回多个值会变得困难或不明智?是因为对象以及您应该如何期望始终以对象的引用形式返回数据包?

如果你看到一个声明函数作为一个契约,它说明了如何调用一个函数,它应该采用哪些参数,以及它具有哪种返回值类型,那么我没有看到背后的逻辑只有一个返回值,因为你可以申请相反的逻辑相反(因此创建了多个返回值的合约).

基于我可以看到的逻辑的唯一原因是,如果一个函数返回多于一个的东西,它还应该操作多于1个的东西超过1个原因,这违背了一个函数应该只做一件事的哲学.如果有一件事是操纵一个对象并返回另一个对象那么它就有意义了,你可以用操纵对象返回一个引用值.

那么为什么存在这种限制呢?

c++ java

30
推荐指数
6
解决办法
4766
查看次数

将少量信息保存为android中的设置(就像第一次运行该应用程序一样)

我想保存一个标志,用于识别我的应用程序是否第一次运行.对于这个简单的工作,我不想创建数据库..

有这么简单的选择吗?我只想保存和阅读一小部分信息.

java database android application-settings

22
推荐指数
3
解决办法
2万
查看次数

键盘快捷键完全隐藏Java-doc注释,因此它们不再在代码中占用任何行

我知道快捷方式:

CTRL+ SHIFT++

CTRL+ SHIFT+-

它分别扩展和最小化Java-doc注释.然而,这种线折叠方式保留了一条空间:

在此输入图像描述

如何崩溃,以便评论不再占用任何代码行?我如何看待上面的java-doc注释需要1行代码.

我尝试自由分心,因此只想显示我的实际代码.


这是Intellij的官方页面,其中汇总了代码折叠快捷方式 (Android Studio是Intellij的一个分支,因此它们具有几乎相同的快捷方式).我找不到我在这里寻找的捷径.

java intellij-idea android-studio

10
推荐指数
2
解决办法
2713
查看次数

如何在下降内存消耗和查找时间的大单词列表(词汇表)中找到单词?

问题

[ 以下是应用程序在哪些约束条件下应该做的描述 ]

我想要一个数据结构,搜索string一个250,000字列表中是否存在,同时只使用相当数量的ram并保持将这个数据结构加载到ram small所需的时间(比如说0-8秒).找到一个单词所需的时间也应该很快(比方说0到0.5秒),但ram的使用更为重要.它也应该可以创建多个游戏(更多关于这个游戏的标题是"使用"),而不需要更多的内存.

知道哪些单词以a开头string,但不足以牺牲加载时间达数秒也是非常有价值的.


使用

它适用于Android离线游戏.有限的ram可用.应用程序根据此帖子可以使用的最大ram数量在16-32mb ram之间,具体取决于设备.我的空Android应用程序已经使用了大约17mb(在Android Studio中使用Memory Monitor).我的android设备将ram的使用量限制在26mb,让我的整个空间大约为8mb Activity.


我试过的选项

他们似乎都注定了不同的方式.

  1. Hashmap - 将所有单词读入哈希映射对象.

    1.1 初始化速度:用23秒慢速将每个单词读入哈希映射.

    1.2 ram用法:使用大量的ram,虽然我忘记了多少.

    1.3 搜索速度:查找列表中是否存在单词的速度当然很快.

    1.4 缩小可能的单词(可选):慢,需要经过整个哈希映射并逐个删除它们.此外,由于它使用删除,因此无法使用相同的哈希映射实例来播放多个游戏.添加更多游戏时会占用太多内存,因此无法缩小可能的单词.

  2. 特里 -实现一个RadixTree& 你可以在这里看到我的实现.

    2.1 初始化速度:用47秒慢速读取每个单词进入RadixTree.

    2.2 ram使用:使用大量的ram,以至于Android几次挂起线程.

    2.3 搜索速度:查找列表中是否存在单词是否快速.

    2.4 缩小可能的单词(可选):超快,因为只需要对树中的节点进行引用,然后找到所有可能的单词作为其子节点.您可以通过缩小可能的单词来玩很多游戏,因为额外的游戏只需要参考树中的节点!

  3. 扫描仪 - 按顺序浏览文字文件

    3.1 初始化速度:无.

    3.2 ram用法:无.

    3.3 搜索速度:约20秒.

    3.4 缩小可能的单词(可选):不能现实地完成.

简单代码:

String word;
String wordToFind = "example";
boolean foundWord = false;

while …
Run Code Online (Sandbox Code Playgroud)

java memory performance android

9
推荐指数
1
解决办法
833
查看次数

EditText - 如何在 android edittext 中设置默认文本

我正在开发一个人们将输入账单的 android 应用程序。我有一个人们输入金额的 EditText。

我想要做的是,例如如果一个人输入“2”,它应该自动转换为“0.02”。然后,如果他/她想输入 22$,他应该按 2、2、0 和 0 按钮。它会像那个“22.00”。我如何使用 EditText 设法做到这一点。你能给我一些想法吗?

这是相关的代码片段:

            <EditText
            android:id="@+id/amount"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dip"
            android:layout_marginTop="5dip"
            android:inputType="number"
            android:hint="@string/enter_amount"
            android:singleLine="true" />



            EditText payment = (EditText) findViewById(R.id.amount);
            if (payment.getText().toString().length() > 0){
                total_amount =Integer.parseInt(payment.getText().toString()) ;
            }
Run Code Online (Sandbox Code Playgroud)

android android-edittext

5
推荐指数
1
解决办法
8192
查看次数

用逗号运算符做{} while(,)是否可能?

昨天我读了关于for循环的Java中的逗号运算符.这符合我的预期.我想到了这种结构,但它没有按预期工作.

';' expected
        } while((userInput < 1 || userInput > 3), wrongInput = true);

';' expected
        } while((userInput < 1 || userInput > 3), wrongInput = true);
Run Code Online (Sandbox Code Playgroud)

我的想法是,在一次迭代后,如果userInput不在1和3之间,它应该设置布尔值wrongInput,true以便在下一次迭代期间显示错误消息.表明该内容userInput无效.

private int askUserToSelectDifficulty() {
    int userInput;
    Boolean wrongInput = false;

    do{
        if(wrongInput) println("\n\t Wrong input: possible selection 1, 2 or 3");
        userInput = readInt();
    } while((userInput < 1 || userInput > 3), wrongInput = true);

    return userInput;
}
Run Code Online (Sandbox Code Playgroud)

我想这也许是因为它在for循环的等效部分内部,这是无效的语法.因为您不能在条件部分中使用逗号运算符?

我看到在for循环中使用逗号运算符的示例:在Java Java 中为for循环提供多个条件- …

java comma while-loop conditional-statements do-while

5
推荐指数
1
解决办法
747
查看次数

如何衡量java程序的效率(特别是:汇编代码)?

我问了一些问题,他们的答案经常在效率方面面对我.我宁愿预先考虑效率,而不是继续问这些类型的问题.然而,当然有许多不同类型的效率.代码,程序集中的行数,写入时间,计算机执行所需的时间.而且我可能会错过很多方法来看待它.

因为有很多方法可以查看效率,所以我想从如何获取自己代码的汇编代码并停在代码中的正确位置开始?(假设你有500行代码,你对450到460行感兴趣).我不确定这是否已经是IDE中的功能,如果是这样,我怎么能找到这样的功能?(=这些东西的命名是什么,以便我可以为我自己的IDE找到它,如果它有这个功能).

(在Stack Overflow上已经有很多关于效率的信息,我看了很多,但是我发现很难理解人们在分析代码时经常会开始的东西.他们是从研究代码开始的,然后组装还是他们只是使用IDE来找到最昂贵的方法并以这种方式改变它们?这是一个不好的问题,因为它当然取决于很多不同的因素,但我希望至少有一点点感觉为此,我认为这个问题的答案可能会有所帮助.)

java performance assembly

5
推荐指数
1
解决办法
585
查看次数

关于Android Studio中的drawable和mipmap的混淆来自书中的旧例子

[免责声明:首先我知道有很多关于drawable和mipmap文件夹的帖子,我读了一堆血统]

从"Android编程 - 大书呆子牧场指南"一书中可以看出,我必须在一些文本旁边插入一个图标Button.对于更高分辨率的屏幕,包含多个尺寸的图标是有意义的.在他们的解决方案中,他们将所有图像放在许多不同的Drawable文件夹中,并且图像的分辨率大小不同.

我通过在很多试验和错误之后将图标放在drawable文件夹中来使它在mipmap文件夹中工作,从而使它工作:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/next_button"
    android:text="@string/next_button"
    android:drawableRight="@drawable/arrow_right/"/>
Run Code Online (Sandbox Code Playgroud)

但是,我对它的工作方式感到困惑:

  1. 人们经常说应该只将应用程序图标放在mipmap文件夹中,这是真的吗?什么是应用程序图标?其他人说只有发射器图标应该放在那里,而有些人说只有图标应放在那里.它是哪一个,它们是互斥的选择!
  2. 我无法自动完成Android Studio中的mipmap文件夹,这让我觉得我必须将所有内容放入我的drawable文件夹,因为Android Studio会为我自动完成.但是,默认情况下,drawable文件夹没有子文件夹.这让我相信可绘制的文件夹不应该再用于不同分辨率的图像,因为为什么默认情况下没有文件夹,所以每个人都可以犯拼写错误..
  3. 什么时候以不同的分辨率提供图标没有意义?我无法想象有人不想要尽可能高的分辨率.

这里我得到了一些困惑:

mipmap文件夹仅用于放置应用程序图标.

那是什么意思?从谷歌翻译我得到:

icon:程序,选项或窗口的屏幕上的符号或图形表示,尤指用于选择的几个中的一个.

java android drawable mipmaps android-drawable

5
推荐指数
1
解决办法
5144
查看次数