【问题标题】:arraylist of character arrays java字符数组的arraylist java
【发布时间】:2018-12-20 04:44:16
【问题描述】:

我最初有一个字符串数组列表,但我想将其保存为这些字符串的数组列表。toCharArray()。是否可以制作一个存储 char 数组的数组列表?这是我尝试实现它的方法。

String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"};
    HashMap<Integer,ArrayList<Character[]>> ordered = new HashMap<>();

    int length = 0;
    int max = 0; //max Length of words left

    for(String word: words){

        if(ordered.containsKey(length) == false){ //if int length key doesnt exist yet
             ordered.put(length, new ArrayList<Character[]>()); //put key in hashmap with value of arraylist with the one value
             ordered.get(length).add(word.toCharArray());
        }
    }

【问题讨论】:

    标签: java arrays string arraylist char


    【解决方案1】:

    请注意,toCharArray() 返回一个基元数组 (char[]),而不是装箱类的数组(您目前拥有的 Character[])。此外,如果数组的长度不在地图中,您只会将给定的数组添加到地图中,这可能不是您想要的行为(即,您应该将行 ordered.get(length).add(word.toCharArray()); 移到 @987654326 之外@ 声明)。

    另外,请注意,Java 8 的流可以为您完成很多繁重的工作:

    String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"};
    Map<Integer, List<char[]>> ordered =
        Arrays.stream(word)
              .map(String::toCharArray)
              .collect(Collectors.groupingBy(x -> x.length));
    

    编辑:
    根据评论中的问题,这在没有流的 Java 7 中也是完全可能的:

    String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"};
    Map<Integer, List<char[]>> ordered = new HashMap<>();
    
    for (String word: words) {
        int length = words.length();
    
        // if int length key doesnt exist in the map already
        List<char[]> list = orderd.get(length);
        if (list == null) {
            list = new ArrayList<>();
            orderd.put(length, list);
        }
        list.add(word);
    }
    

    【讨论】:

    • 哦,谢谢你,你能多谈谈 char[] 和拳击课 Character[]。我以为我必须在地图的通用中使用 而不是 。稍后我将研究 Java 8 流,但有没有办法在 Java 7 中做到这一点?
    • @PeterLuo 数组是 Java 中的引用类型,因此 char[] 可以用作类型参数。但是,由于char 是原始类型,它不能(yet)。有关 Java 7 问题的答案,请参见下文。
    • @PeterLuo Logan 的评论基本上解释了 charCharacter 的点。 WRT 在 Java 7 中实现这一点 - 它有点笨拙,但完全有可能。有关详细信息,请参阅我编辑的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2013-06-30
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多