【问题标题】:How to take for loop output to separate array in Java?如何在 Java 中将 for 循环输出用于分隔数组?
【发布时间】:2016-01-16 03:44:43
【问题描述】:

我需要将以下代码输出以分隔数组以用于另一个计算。在此示例中,输出为,

z count is= 1                                                                                
y count is= 3                                                                                      
x count is= 2.   

我需要用 1、3、2 来分隔数组。我该怎么做?我是 Java 新手。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class ForArrays {
    public static void main(String[] args) {

        ArrayList<String> name = new ArrayList<String>();
        HashMap<String, Integer> termFreqMap = new HashMap<String, Integer>();
        ArrayList<String> words = new ArrayList<String>();
        HashMap<String, Integer> wordFreqMap = new HashMap<String, Integer>();

        name.add("x");
        name.add("y x");
        name.add("y z y");

        // count words
        for (int j = 0; j < name.size(); j++) {
            String tempname = name.get(j);
            String[] result = tempname.split(" ");
            for (String s : result) {
                Integer twf = wordFreqMap.get(s);
                if (twf == null)
                    wordFreqMap.put(s, new Integer(1));
                else {
                    wordFreqMap.put(s, new Integer(++twf));
                }
            }
        }

        for (Map.Entry<String, Integer> entry : wordFreqMap.entrySet()) {
            String tempWord = entry.getKey();
            Integer wf = entry.getValue();
            System.out.println(tempWord + " " + "count is= " + wf);
        }
    }
}

【问题讨论】:

    标签: java arrays for-loop arraylist hashmap


    【解决方案1】:

    使用 Hashmap 的大小 创建一个 int 数组,以便 hashmap 大小和数组大小相似。并在迭代 Hashmap 时将结果保存在数组中。
    问题是 hashmap 没有插入顺序,因此数组不会按插入顺序排列。所以您可能不知道计数是什么键。为此,您可以创建一个键数组并将键也放在那里到keys数组和countarray的一个映射。

        int countArray[]  = new int[wordFreqMap.size()];
        int i=0;
        for (Map.Entry<String, Integer> entry : wordFreqMap.entrySet()) {
            String tempWord = entry.getKey();
            Integer wf = entry.getValue();
            System.out.println(tempWord + " " + "count is= " + wf);
            countArray[i++] = wf;
    
        }
    

    【讨论】:

    • 我尝试使用 System.out.println("Array output" + countArray[i]);但它给出了一个错误“java.lang.ArrayIndexOutOfBoundsException:3”。
    • 它与 System.out.println(Arrays.toString(countArray));非常感谢您的支持。
    • 你应该访问数组小于大小,如果大小是 3 ,访问最多 2 。
    • 如果我需要将输出作为 System.out.println(countArray[i]);用于进一步计算。我怎么能接受它?因为它给出了“线程中的异常”main“java.lang.ArrayIndexOutOfBoundsException:3”错误? (我是java新手)
    • for(i=0;i
    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多