【问题标题】:how to Convert an ArrayList of Strings to an ArrayList of ArrayList of Strings with the same length strings grouped into a list together如何将字符串的 ArrayList 转换为具有相同长度的字符串的 ArrayList 的 ArrayList 组合成一个列表
【发布时间】:2016-04-02 06:54:28
【问题描述】:

我有一个字符串数组列表(数组列表中的每个单独元素只是一个没有空格的单词),我想将相同长度的元素分组到单独的 ArrayLists 中。

所以说数组列表有

element 0 = "abcd"
element 1 = "ansd,"
element 2 = "bac"
element 3 = "abc"
element 4 = "cab"

我的结果应该是 ArrayList(ArrayList(String))->{{"abcd","ansd"} , {"bac","abc","cab"}}

【问题讨论】:

  • 要求不明确。花点时间解释清楚。在您的情况下,它不是具有相同长度的字符串列表。
  • 在上面的例子中,我想创建一个ArrayList A,包含长度为4的字符串:{"abcd", "ansd"}和一个ArrayList B,包含长度为3的字符串:{"bac ","abc","cab"}。这两个 ArrayLists A,B 都应该添加到另一个 ArrayList C={ArrayList A, ArrayList B} 中。

标签: arraylist hashmap


【解决方案1】:

没关系,我找到了解决方案。 这个问题有点类似于查找字符串中重复字符的数量。 这是我的问题的解决方案。

public static void main(String[] args){

ArrayList<String> A= new ArrayList<String>();
A.add("abc");
A.add("bac");
A.add("abcd");
A.add("cabd");

ArrayList(ArrayList(String)) C=new ArrayList(ArrayList(String))();

HashMap(Integer, ArrayList(String)) hm1= new HashMap(Integer, ArrayList(String))();

for (int i=0;i is less than A.size();i++){

    ArrayList<String> B;

    if (!hm1.containsKey(A.get(i).length())){
        B=new ArrayList<String>();
        B.add(A.get(i));
        hm1.put(Integer.valueOf(A.get(i).length()), B);

    }
    else
        hm1.get(A.get(i).length()).add(A.get(i));
}
for (Map.Entry m: hm1.entrySet()){

    C.add((ArrayList<String>) m.getValue());
}

}

如果有人有更好的解决方案,请发布。

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 2017-04-10
    • 2011-09-13
    • 1970-01-01
    • 2012-04-28
    • 2017-03-31
    • 2011-05-20
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多