我有一个问题就是在这种情况下选择使用哪个数组。有许多数组,如列表,集合等。我想在数组中保留两个这样的数字(这里的数字是随机的): (许多行和2列)。
2, 4
4, 8
8, 7
...
但是也有这个数组的功能,轻松取第一个数组行并将其放在最后。你能建议我在这种情况下使用什么?
P.S。我是新的所以我想选择最好的选择,这就是为什么我在这里。
答案 0 :(得分:3)
你应该更好地创建一个类,比如Pair
:
class Pair {
private int i1;
private int i2;
public Pair(int i1, int i2) { this.i1 = i1; this.i2 = i2; }
public int getI1() { return i1; }
public int getI2() { return i2; }
}
然后根据您的具体需要在ArrayList<Pair>
,HashSet<Pair>
等之间进行选择。
答案 1 :(得分:2)
取决于轻松的含义。易于编程或高性能。
既然你是新人,我猜你正在寻找第一个。我会坚持使用ArrayList<Integer>
或ArrayList<Pair<Integer, Integer>>
,其中Pair是这样的自定义类:
public class Pair<A, B>
{
public Pair(A a, B b) { this.a = a; this.b = b; }
public A a;
public B b;
}
然后像这样使用:
List<Pair<Integer, Integer>> list = new ArrayList<Pair<Integer, Integer>>();
list.add(new Pair<Integer, Integer>(3, 5));
list.add(new Pair<Integer, Integer>(7, 1));
// now take the first and put it at the end:
list.add(list.remove(0));
编辑:如果将第一个元素移动到最后的性能是瓶颈,并且你想要快速,那么,使用LinkedList。这将是一个O(1)操作,而使用ArrayList执行它将是一个O(n)操作。
答案 2 :(得分:1)
首先,您谈论的是集合,而不是数组:数组是一种特定的集合,最原始的集合。当创建集合时已知集合中的元素数量时,应直接使用数组,并且在此之后永远不会更改。
如果您的要求是从集合的开头删除元素并在结尾插入它,那么您应该使用Queue<T>
或LinkedList<T>
,并创建一个代表该集合的对象一对数字,它的泛型类型参数。这些数据结构经过优化,可以快速插入和移除。