我有一个strng数组。
e.g:
Exception in thread "main" java.lang.NumberFormatException: For input string: " 3"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
at java.lang.Integer.parseInt(Integer.java:615)
at com.mkyong.properties.Getfromresources.main(Getfromresources.java:24)
C:\Users\tamimwasif\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:
Java returned: 1 BUILD FAILED (total time: 0 seconds)
我知道如果我使用StrArray.Sort(),它将按字母顺序排序。但我想通过使用这个字母来排序=" jngmclqskrzfvbwpxdht"
我已经搜索过但我只找到使用HashTable来解决它的人。
可以用JS吗?
答案 0 :(得分:4)
let order = 'jngmclqskrzfvbwpxdht'
let StrArray = ["hook", "javascript", "hour", "nemo", "case"];
StrArray.sort(function(a,b) {
let firstAlphaOfParam1 = a.charAt(0);
let firstAlphaOfParam2 = b.charAt(0);
return order.indexOf(firstAlphaOfParam1) - order.indexOf(firstAlphaOfParam2);
})
console.log(StrArray);
解决方案仅考虑仅按StrArray
中元素的第一个字母排序。基本上我们采用第一个字母表并在jngmclqskrzfvbwpxdht
中找到索引并比较它们
答案 1 :(得分:2)
你的排序词汇不包含你单词中的所有字母,因此不清楚如何继续使用'hour'和'hook'这样的单词,因为排序列表中没有'o'。您可以忽略它们,并在排序顺序中将列表中不存在的任何内容视为相等。您还应该测试类似的基础,如“钩子”和“钩子”
例如:
let StrArray = ["hook", "javascript", "nemo", "hours", "case", "hour", "houn"];
const sort_order = "jngmclqskrzfvbwpxdht"
StrArray.sort((a, b) => {
let i = 0;
while (i < a.length && i < b.length ){
let a_i = sort_order.indexOf(a[i]),
b_i = sort_order.indexOf(b[i]);
if (a_i === b_i ) {
i++
continue
}
return a_i - b_i
}
// one is a substring of the other, sort by length
return a.length - b.length
})
console.log(StrArray)
答案 2 :(得分:1)
我可以留下一小笔捐款,这段代码可以使用第一个字母排序。
var arr1 = ["hook", "javascript", "nemo", "case"];
var myAbc = 'jngmclqskrzfvbwpxdht';
var final_array = [];
for (i = 0; i < myAbc.length; i++) {
for (j = 0; j < arr1.length; j++) {
if (arr1[j].charAt(0) == myAbc.charAt(i)) {
final_array.push(arr1[j]);
}
}
};
console.log(final_array);
&#13;