拆分数组中的元素

时间:2014-04-10 04:33:04

标签: java arrays sorting

我有一个由颜色阴影(浅绿色,红色,蓝色等)组成的数组,并且有关于颜色和强度的数字" (1000,1200,400等)

通过.txt文件读取这些行,如下所示

  

浅绿色1200

     

红色1000

     

蓝色400

我想知道是否有办法将两个元素分成不同的数组(一个用于String,一个用于int),这样我就可以按强度按升序对数组进行排序。

3 个答案:

答案 0 :(得分:1)

您可以按照以下步骤解决问题。

  1. 逐行阅读txt文件。
  2. 将每一行分成颜色和力量。
  3. 将力量作为键,将颜色作为值存储到TreeMap
  4. 注意: TreeMap会根据密钥按升序对数据进行排序。如果您具有重复的强度但是具有唯一的颜色,则将颜色作为键存储,将值作为值存储到HashMap中,并根据值对HashMap进行排序。

答案 1 :(得分:1)

你可以使用awk:

cat file | awk '{print $1}' > file1

cat file | awk '{print $2}' > file2

所以文件1将包含颜色列表,文件2将包含优势列表。

现在你可以推送int值来做任何你喜欢的事情。

替代:您可以遵循正则表达式路线:

str = "Red 1000";
String[] splited = str.split("\\s+(?=\\d)");

这只会在数字之前拆分,即" strength":

演示:http://regex101.com/r/cF6qD6

答案 2 :(得分:0)

如果你想在不同的数组(int)中获取颜色字符串值和不同的数组及其数值,他们使用 split 来拼写从txt文件中读取的字符串值,然后添加添加已创建的数组

让我们考虑一下 arr as array 是否有来自txt文件的值,现在我们想要获取颜色数组中的字符串值及其中的数值val数组,我认为下面的代码会帮助你。

String []arr = {"col 1 200","col 2 10","col 3 500"};

String []color = new String[arr.length];
int []val = new int[arr.length];

String []temp;

for (int i = 0; i < arr.length; i++) {
    temp = arr[i].trim().split(" ");

    for (int j = 0; j < temp.length -1; j++) {
        if(color[i]==null)
            color[i]="";
        color[i] += temp[j]+" ";
    }

    color[i] =color[i].trim();      
    val[i] = Integer.parseInt(temp[temp.length-1]);
}

它不会在颜色数组中添加 col 1,col 2和col 3 ,在val数组中添加值200,10,500

- 输出 -

如果你打印

color -- ["col 1", "col 2", "col 3"]
val -- [200, 10, 500]