我有两个ArrayLists:一个字符串列表和一个整数列表。例如:
Bob 2
Kevin 6
Lane 4
Susan 2
//the ArrayLists will have more elements
我正在尝试对整数ArrayList进行排序(使用MergeSort)并使字符串ArrayList与整数ArrayList相对应,例如:
Susan 2
Bob 2
Lane 4
Kevin 6
我得到的其他答案建议使用映射(int是键,String是值);但是,我不能这样做,因为会有重复的密钥。
我读过关于番石榴的多地图;但是,我不太喜欢将jar文件包含到类路径中。
有没有其他办法可以做到这一点?
其中一种使用方法是真正简单的hashmap,例如:
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
public class ExStringArraySort {
static HashMap<String, Integer> mapPerson = new HashMap<String, Integer>();
static String[] prsn;
public static void main(String[] args) {
// Add persons
mapPerson.put("Bob", 2);
mapPerson.put("Kevin", 6);
mapPerson.put("Lane", 4);
mapPerson.put("Susan", 2);
String[] prsn = mapPerson.keySet().toArray(new String[mapPerson.size()]);
Arrays.sort(prsn);
System.out.println(Arrays.toString(prsn));
System.out.println("Print detail:");
for (int i = 0; i < prsn.length; i++) {
System.out.println(prsn[i]+"\t"+mapPerson.get(prsn[i]));
}
Arrays.sort(prsn, Collections.reverseOrder());
System.out.println("\n"+Arrays.toString(prsn));
System.out.println("Print detail:");
for (int i = 0; i < prsn.length; i++) {
System.out.println(prsn[i]+"\t"+mapPerson.get(prsn[i]));
}
}
}
输出:
[Bob, Kevin, Lane, Susan]
Print detail:
Bob 2
Kevin 6
Lane 4
Susan 2
[Susan, Lane, Kevin, Bob]
Print detail:
Susan 2
Lane 4
Kevin 6
Bob 2
只要字符串和int之间确实存在某种有意义的联系,最好的方法就是创建一个Java类来满足您的需要,比如:
public class MyClass implements Comparable<MyClass> {
private String myString;
private int myInt;
public MyClass(String s, int x) {
myString = s;
myInt = x;
}
public int getInt() {
return myInt;
}
public String getString() {
return myString;
}
public void setInt(int x) {
myInt = x;
}
public void setString(String s) {
myString = s;
}
// this method is the only method defined in the Comparable<T> interface
// and is what allows you to later do something like Collections.sort(myList)
public int compareTo(MyClass other) {
return myInt - other.getInt();
}
}
然后创建一个列表list
,您可以将新创建的类的实例添加到该列表中。
这个类实现了Comparable接口,这意味着您可以使用Java预定义的排序方法,如Collections.sort(),并让Collections类知道您希望对象如何排序。如果您宁愿实现自己的排序算法,则实现此接口并不是必需的,但仍然是一种良好的做法。
我是Java和Stack Overflow的新手,我有一个关于排列的问题。 方法:我使用中的对象生成。每个的大小从(可能最小为1)到,并包含具有唯一名称属性的自定义生成对象。 问题:现在我的问题是如何在我的外部(y轴)中获得从第一个到最后一个的所有可能对象组合的排列(我想我们可以说这是x轴)? 我试着举一个简单的例子: : 1.1|1.2|1.3 : 2.1 : 3.1|3.2 这里,这些位于外部
我试图将输入与arraylist中的值进行比较。 前任;我有一个arraylist: 数组的每个索引在我的程序中代表一个唯一的属性。e、 g索引0代表,索引1代表等。如果我做返回第二个数组。 我正在尝试将与每个数组中的第二个元素进行比较。所以假设我运行这个,我希望它遍历每个数组中的每个[1],如果该索引匹配,则返回true。 因此,我希望它将'number'(1102)与每个第一个索引元素进行比较
与我之前的帖子相似,我试图开发一个纸牌游戏: a)打印出整副牌 接下来,私有静态int numPairs(ArrayList cards)是一个计算卡片中卡片对数量的方法。如果两张牌等级相同,则两张牌成对。牌中三张相同等级的牌计为1对。如果相同等级的四张牌都在牌中,则有2对牌。这里的问题是,我不确定如何用我编写的代码将3张等级相同的牌计数为1对,并且仍然会出现表示字段card.rank不可见的错误
我已经创建了一个的数组: 我的问题是现在如何访问其中一个数组的元素。例如,我可以通过以下方式访问(或在示例打印中)整个数组元素: 但是如何访问所拥有的数组中的第一个元素呢?我尝试了所有方法,比如,但当数组是链接列表的元素时,我不知道如何访问数组中的元素。
我想在全局范围内使用一个数组,以便能够用不同的方法修改它,并在最后用主调用方法
我有一个类来代表一个玩家的手牌。但是,我(在另一个类中)有一个数组列表,我想在其中表示一堆玩家手。问题是我不知道如何在多手牌的数组列表中将一张牌添加到手牌中。我有一个代表卡牌和一副牌的类,效果很好。我只是试图了解如何将对象添加到数组列表中的对象。谢谢!