我有一个由颜色阴影(浅绿色,红色,蓝色等)组成的数组,并且有关于颜色和强度的数字" (1000,1200,400等)
通过.txt
文件读取这些行,如下所示
浅绿色1200
红色1000
蓝色400
我想知道是否有办法将两个元素分成不同的数组(一个用于String,一个用于int),这样我就可以按强度按升序对数组进行排序。
答案 0 :(得分:1)
您可以按照以下步骤解决问题。
TreeMap
。 注意: 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":
答案 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]