public class NewMain {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Ace of Hearts");
array.add("King of Clubs");
array.add("Three of Spade");
array.add("Ace of Hearts");
array.add("Ten of Clubs");
for(String s: array)
System.out.println(s+"at postion: "+array.indexOf(s));
}
}
IndexOf()返回对象在ArrayList中的第一次出现。 假设我的代码是扑克玩家的手,并且我想知道他持有的卡的索引。 红桃心位于 1号和4号位置。但是Index A()在出现“ Ace of Hearts”时都会分别返回位置1和1 。
问题:
1)还有其他获取价值的方法吗?
2)我应该使用其他数据结构,例如HashMap还是其他?
答案 0 :(得分:1)
List.indesOf()方法将返回列表的第一个匹配项。但是您的要求可以通过以下方式满足。
import java.util.ArrayList;
public class NewMain {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Ace of Hearts");
array.add("King of Clubs");
array.add("Three of Spade");
array.add("Ace of Hearts");
array.add("Ten of Clubs");
for(int i =0;i<array.size();i++)
System.out.println(array.get(i)+"at postion: "+i);
}
}
答案 1 :(得分:0)
这应该可以解决您的问题:
public class NewMain {
public static void main(String[] args) {
String abc="Ace of Hearts";
List<String> array = new ArrayList<String>();
array.add("Ace of Hearts");
array.add("King of Clubs");
array.add("Three of Spade");
array.add("Ace of Hearts");
array.add("Ten of Clubs");
List<Integer> indexList= indexOfAll(abc,array);
System.out.println(indexList);
}
static <T> List<Integer> indexOfAll(T obj, List<T> list) {
final List<Integer> indexList = new ArrayList<Integer>();
for (int i = 0; i < list.size(); i++) {
if (obj.equals(list.get(i))) {
indexList.add(i);
}
}
return indexList;
}