Java 哪一个是更好的选择?

Java 哪一个是更好的选择?,java,android,performance,Java,Android,Performance,我需要维护一个列表,其中包含两个字符串类型的值,比如说v1,v2,每个键都是k。 什么是更好的选择 Hashmap的值包含一个包含v1和v2的字符串,并在选择后使用split检索正确的值。 值包含两个字符串变量数组的Hashmap 我正在创建一个android应用程序,所以只关心性能。在第二种情况下,我可以直接访问,但每个值将包含另一个数组,我不知道,但它看起来很复杂,而在第一种情况下,它将在每个访问上使用split函数,如v.split,[0] 请引导我 Map<String,Strin

我需要维护一个列表,其中包含两个字符串类型的值,比如说v1,v2,每个键都是k。 什么是更好的选择

Hashmap的值包含一个包含v1和v2的字符串,并在选择后使用split检索正确的值。 值包含两个字符串变量数组的Hashmap 我正在创建一个android应用程序,所以只关心性能。在第二种情况下,我可以直接访问,但每个值将包含另一个数组,我不知道,但它看起来很复杂,而在第一种情况下,它将在每个访问上使用split函数,如v.split,[0]

请引导我

Map<String,String[]> listMap= new HashMap<String, String[]>();
Map<String,String> listMap1= new HashMap<String, String>();;

for (int i = 1; i < tl.getChildCount(); i++) {
    TableRow row = (TableRow) tl.getChildAt(i);
    COLOR_TABLE clr = (COLOR_TABLE) row.getTag();

    if (clr == COLOR_TABLE.green) {
        //comp
        String x1=listMap1.get( ((TextView) row.getChildAt(0)).getText());
        String x2=listMap.get( ((TextView) row.getChildAt(0)).getText());
        // now i have to add two string values in a list seperately
    }
}

我认为split函数以Ostring大小复杂度运行,但数组的reach元素是一个常量

我认为split函数以Ostring大小复杂度运行,但数组的reach元素是一个常量

字符串将比数组慢得多,并且代码也更复杂。需要注意的是,在实际测量性能差异之前,很难确定性能差异


但如果是我,我会使用最简单的解决方案,使用对象。后来,如果程序变得太慢,测量结果显示这是一个性能瓶颈,我会考虑其他解决方案。

字符串将比数组慢得多,而且代码也更复杂。需要注意的是,在实际测量性能差异之前,很难确定性能差异


但如果是我,我会使用最简单的解决方案,使用对象。后来,如果程序变得太慢,测量结果显示这是一个性能瓶颈,我会考虑其他解决方案。

决不要滥用字符串!它有时可能很慢,而且它们不是为此目的而制造的

如果希望更面向对象,可以使用泛型Pair类:

public class Pair<A, B> {

  public A first;
  public B second;

  public Pair(A first, B second) {
    this.first = first;
    this.second = second;
  } 
}

当然,通过访问器等,您可以做得更好

永远不要滥用字符串!它有时可能很慢,而且它们不是为此目的而制造的

如果希望更面向对象,可以使用泛型Pair类:

public class Pair<A, B> {

  public A first;
  public B second;

  public Pair(A first, B second) {
    this.first = first;
    this.second = second;
  } 
}

当然,通过访问器等,您可以做得更好

从设计角度来看,使用数组或自定义类作为值将是首选方法。如果将两个字符串打包成一个由字符分隔的字符串,则需要确保第一个字符串不会包含相同的字符,或者必须使用某种转义机制才能包含该字符


如果您只担心性能,请测试所有选项并选择最佳选项。很难做出预测,因为结果将取决于存储的数据和库的实现方式。例如,存储对独立字符串的引用的任何结构都可能在访问时发生缓存丢失;如果字符串拆分或类似的方法比缓存未命中更便宜,则会更快。

从设计角度来看,使用数组或自定义类作为值是首选方法。如果将两个字符串打包成一个由字符分隔的字符串,则需要确保第一个字符串不会包含相同的字符,或者必须使用某种转义机制才能包含该字符


如果您只担心性能,请测试所有选项并选择最佳选项。很难做出预测,因为结果将取决于存储的数据和库的实现方式。例如,存储对独立字符串的引用的任何结构都可能在访问时发生缓存丢失;如果字符串拆分或类似的方法比缓存未命中更便宜,那么它会更快。

你能提供一些代码作为实现的示例吗?你为什么不想使用包含v1和v2的简单对象?我已经添加了我想要的代码你能提供一些代码作为实现的示例吗?你有什么理由不想使用包含v1和v2的简单对象吗?我已经添加了一个我想要的代码。当我知道我只有一些字符串时,我添加了一个泛型类。设置使用它,你现在只有字符串了。。。。。但是明天呢??????。可重用性!由于以上投票,接受了此ans。。现在将使用泛型类为什么泛型类当我知道我只有一些字符串时让我使用它,你现在只有字符串了。。。。。但是明天呢??????。可重用性!由于以上投票,接受了此ans。。现在将使用泛型类