【问题标题】:Formatting string from ArrayList从 ArrayList 格式化字符串
【发布时间】:2017-05-10 20:08:52
【问题描述】:

我有两个 ArrayList,例如:

infromation, id, key3, something,... -> 这是array1

some_value,1539,value3,anything,... -> 这是array2

我想加入key1和value1,key2和value2等,比如这个例子:

information...........some_value
id....................1539
key3..................value3
something.............anything

我尝试使用此代码:

Integer dotsNeeded = 50 - array1.length();

String repeated = new String(new char[dotsNeeded]).replace("\0", ".");
finaArray.add( array1.get(i) + repeated + array2.get(i) );

但效果不好,因为不同的字母需要不同的空间。

【问题讨论】:

  • 如果你不介意使用 HashMap 而不是 ArrayList
  • 为什么需要这样格式化字符串?也许有另一种解决方案
  • 显示来自 array1 和 array2 的字符串,如目录。所有这些值最终只能在一个 TextView 中。
  • 最好使用列表视图和自定义布局,其中包含两个文本视图,以显示两个值。

标签: android formatting


【解决方案1】:

试试这个

ArrayList<String> list1;
ArrayList<String> list2;
ArrayList<String> formatted = new ArrayList<>();

int longest;
for (String str : list1) {
    if (longest < str.length()) longest = str.length();
}
longest += 10;

for (int i = 0; i < list1.size(); i++) {
    String item1 = list1.get(i);
    String periods = new String(new char[longest-item1.length()]).replace("\0", ".");
    formatted.add(item1 + periods + list2.get(i));
}

它在第一个列表中找到最长的项目,然后用longest += 10 添加额外的句点。然后将相同索引的项目与它们之间的句点连接起来。

【讨论】:

    【解决方案2】:

    类似这样的:

    StringBuilder builder = new StringBuilder();
    int lineSize = 20;
    
    for (int i=0 ; i<key.size() ; i++){
        builder.append(key.get(i));
        builder.append(new String(new char[lineSize-key.get(i).length()]).replace("\0", "."));
        builder.append(value.get(i));
        builder.append("\n");
    }
    
    Log.d(TAG, builder.toString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多