你好,我有2个字符串数组
private String names[] = {
"Drinks",
"Bikes",
"Cars"};
private String desc[] = {
"this is drinks package",
"package for bikes",
"package cars"};
// now i used
Arrays.sort(names);
既然名称是正确的A - Z顺序,我如何根据“名称”数组排序“desc”数组?例如,在排序数组“名称”结果后:
Bikes,Cars,Drinks
现在我希望desc数组以相同的方式格式化,因此正确的“desc”位于正确的“名称”上。结果应为:
names = "Bikes,Cars,Drinks"
desc = "package for bikes","package cars,this is drinks package"
我们可以这样做吗?
标记是重复的,这不是下降的重复
答案 0 :(得分:1)
您的目标是将键(名称数组)链接到值(descr数组)。
您可以通过两种方式实现它:
String[][] myItems = new String[][] {
{"Drinks", "This is drink package"},
{"Cars", "package cars"},
{"Bikes", "package for bikes"},
...
};
现在您可以对其进行排序following this example或其他任何其他
有了这个,您只需要创建一个AbstractMap.SimpleEntry<String, String>
的一维数组并对其进行排序。您可以按照我为此目标链接的文档。
希望这有帮助
注意
如果两个阵列之间没有逻辑,则无法链接它们。在你的例子中,它可以通过在第二个数组中搜索第一个数组的关键字来完成,但由于你没有说任何关于任何&#34;必须有&#34;对于desc数组,我们必须假设一个&#34; kid
&#34;条目可以链接到&#34; baby package
&#34; descr,所以你无法通过搜索&#34; kid
&#34;来找到它。希望我以一种体面的方式解释
答案 1 :(得分:1)
为什么不使用课程?
与Object-Oriented Principles一样,当您拥有与特定主题相关的数据时,您可以将它们放在一个类中。
示例:
的NameDescription类public class NameDescription implements Comparable<NameDescription> {
private String name;
private String description;
public NameDescription(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public int compareTo(NameDescription o) {
return name.compareTo(o.getName());
}
}
可比较的界面提供compareTo方法,使您能够定义比较公式以将当前对象与另一个对象进行比较(它们甚至不需要是相同的类型)。 Arrays.sort方法使用compareTo方法对元素进行排序,这样就可以将数据放在一起,任何排序方法都可以根据compareTo方法为您提供一致的结果。
分拣机类:
public class Sorter {
public static void main(String[] args) {
NameDescription namesDescriptions[] = {
new NameDescription("Drinks", "this is drinks package"),
new NameDescription("Bikes", "package for bikes"),
new NameDescription("Cars", "package cars"),
};
Arrays.sort(namesDescriptions);
// ASCENDING
for(int i=0; i<namesDescriptions.length; i++) {
System.out.println(namesDescriptions[i].getName());
}
for(int i=0; i<namesDescriptions.length; i++) {
System.out.println(namesDescriptions[i].getDescription());
}
System.out.println("---------");
// DESCENDING
for(int i=namesDescriptions.length-1; i>=0; i--) {
System.out.println(namesDescriptions[i].getName());
}
for(int i=namesDescriptions.length-1; i>=0; i--) {
System.out.println(namesDescriptions[i].getDescription());
}
// To save them in separate arrays
String[] names = new String[namesDescriptions.length];
String[] desc = new String[namesDescriptions.length];
String[] imageid = new String[namesDescriptions.length];
for(int i=0; i<namesDescriptions.length; i++) {
names[i] = namesDescriptions[namesDescriptions.length-i-1].getName();
desc[i] = namesDescriptions[namesDescriptions.length-i-1].getDescription();
imageid[i] = namesDescriptions[namesDescriptions.length-i-1].getimg();
}
}
}