小编Gen*_*zer的帖子

打破java泛型命名约定?

我有一个接口,其声明如下:

/**
* @param T - the type of entity.
* @param C - the type of entity container will be returned.
*/
public interface FindByNamedQuery<T extends Serializable, C extends Collection<T>> extends Command {
    C executeNamedQuery(String namedQuery);
}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以(应该)打破Java命名约定来执行此操作:

public interface FindByNamedQuery<ENTITY_TYPE extends Serializable, RETURNED_CONTAINER extends Collection<ENTITY_TYPE>> extends Command {
    RETURNED_CONTAINER executeNamedQuery(String namedQuery);
}
Run Code Online (Sandbox Code Playgroud)

java generics naming-conventions

23
推荐指数
3
解决办法
5966
查看次数

TreeMap或HashMap更快

我正在写一本字典,大量使用String作为键Map<String, Index>.我关心的是哪一个HashMap,并TreeMap会产生更好的(更快)的性能在搜索在地图上的关键?

java performance

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

Android - 字典文件.哪个更快,数据库或读取文件直接?

我正在为android制作一个字典应用程序.这个应用程序使用stardict和DICT文件,这些文件通常很大(10MB或更多)并且只包含纯文本.

当用户查找单词时,我的应用程序将随机读取该文件并返回结果.我读过一些文章,认为阅读文件既昂贵又缓慢.所以我想知道将所有数据带入数据库是否是更好的解决方案?

database io android dictionary

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

原始数组的"通用"解决方案?

我有用于处理原始数组输入的类:char []的CharArrayExtractor,byte []的ByteArrayExtractor,int []的IntegerArrayExtractor,...

public void CharArrayExtractor {

    public List<Record> extract(char[] source) {
        List<Record> records = new ArrayList<Record>();
        int recordStartFlagPos = -1;
        int recordEndFlagPos = -1;
        for (int i = 0; i < source.length; i++) {
            if (source[i] == RECORD_START_FLAG) {
                recordStartFlagPos = i;
            } else if (source[i] == RECORD_END_FLAG) {
                recordEndFlagPos = i;
            }
            if (recordStartFlagPos != -1 && recordEndFlagPos != -1) {
                Record newRecord = makeRecord(source, recordStartFlagPos,
                        recordEndFlagPos);
                records.add(newRecord);
                recordStartFlagPos = -1;
                recordEngFlagPos = -1;
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java arrays refactoring primitive-types

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

Java Generics,如何强制扩展超类的方法的两个参数具有相同的类型?

假设我有一个类层次结构如下:

class Vehicle;
class Car extends Vehicle;
class Plane extends Vehicle;
Run Code Online (Sandbox Code Playgroud)

我有一个比较两个对象的函数

public <T extends Vehicle> generateDiff(T original, T copy)
Run Code Online (Sandbox Code Playgroud)

在编译时,上面的方法保证了两个对象Vehicle,但是它不能确保两个对象的类型是相同的.

generateDiff(new Car(), new Car()); //OK
generateDiff(new Plane(), new Plane()); //OK
generateDiff(new Car(), new Plane()); //WRONG
Run Code Online (Sandbox Code Playgroud)

我可以在编译时使用泛型来实现这个目的吗?

Ps:目前,我已实现它将抛出异常,如果Class两个对象不相同.但我对此并不满意.

提前致谢.

java generics

9
推荐指数
2
解决办法
1293
查看次数

运算符优先级,结果是否正确?

可能重复:
未定义的行为和序列点

x这段代码后的价值是多少?

int x = 5;
x = ++x + x++;
Run Code Online (Sandbox Code Playgroud)

在Java中,结果是12,但在C++中,结果是13.

我搜索了Java和C++的运算符优先级,它们看起来一样.那么为什么结果不同呢?是因为编译器吗?

c++ java operator-precedence

8
推荐指数
1
解决办法
614
查看次数

构建缓存失败时应该抛出哪个异常?

我有一个包含缓存(Set)的类,缓存是在实例化的基础上构建的.我很困惑,如果构建缓存失败(无法连接到数据库或某些),我应该抛出哪个异常/错误.

class Provider {

   public Provider() {
       buildCache();
   }

   private void buildCache() {
       try {
           this.cache = getDataFromDb();
       } catch (Exception ex) {
           throw new ???
       }          
   }
}
Run Code Online (Sandbox Code Playgroud)

我脑子里有一个例外ExceptionInInitializerError,但是javadoc说它是在初始化静态成员时抛出的.

我应该抛出一个IllegalStateException原因,没有构建缓存,所以这个类是没用的?

很明显,我可以创建自己的ErrorOnBuildingCache并抛出它,但我想知道Java库中的任何异常是否适合这种情况.

java exception

6
推荐指数
1
解决办法
243
查看次数

从Charset创建一个新的String抛出NoSuchMethodError(Android)

我有一段代码创建一个新String的如下:

private final static Charset UNICODE_CHARSET = Charset.forName("UTF-8");

public String makeNewUnicodeString(byte[] octects) {
    return new String(octects, UNICODE_CHARSET);
}
Run Code Online (Sandbox Code Playgroud)

在我的计算机上测试时它工作正常.但是当我在Android模拟器上运行时,它会抛出:

java.lang.NoSuchMethodError: java.lang.String.<init>
Run Code Online (Sandbox Code Playgroud)

但这有效:

public String makeUnicodeString(byte[] octets) {
    try {
        return new String(octets, "UTF-8")
    } catch (UnsupportedEncodingException uee) {
       // never throw.
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Android 2.2 API 8,rev 2.

java string android character-encoding

6
推荐指数
1
解决办法
8809
查看次数

用于文件流的byte []与char []的Java性能

我正在编写一个读取文件的程序(使用自定义缓冲区,8KB),然后在该缓冲区中找到一个关键字.由于Java提供了两种类型的流:字符和字节,我使用它们byte[]char[]缓冲来实现它.

我只是想知道,这将是对性能更快,更好,因为char是2 byte和使用时Reader阅读起来char[]时,Reader将执行转换从后bytechar,我认为可以把它比仅使用较慢byte[].

java io

6
推荐指数
1
解决办法
6742
查看次数

Collection.stream()是否具有内部同步?

我一直在尝试重现(并解决)ConcurrentModificationException当一个实例HashMap被多个Threads 读取和写入时.

免责声明:我知道这HashMap不是线程安全的.

在以下代码中:

import java.util.*;

public class MyClass {

    public static void main(String args[]) throws Exception {
        java.util.Map<String, Integer> oops = new java.util.HashMap<>();
        oops.put("1", 1);
        oops.put("2", 2);
        oops.put("3", 3);

        Runnable read = () -> {
            System.out.println("Entered read thread");

            /*
             * ConcurrentModificationException possibly occurs
             *
            for (int i = 0; i < 100; i++) {
                List<Integer> numbers = new ArrayList<>();
                numbers.addAll(oops.values());
                System.out.println("Size " + numbers.size());
            }
            */

            for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

java multithreading java-stream

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