这种情况的最佳阵列

时间:2013-08-18 11:43:08

标签: java arrays

我有一个问题就是在这种情况下选择使用哪个数组。有许多数组,如列表,集合等。我想在数组中保留两个这样的数字(这里的数字是随机的): (许多行和2列)。

2, 4
4, 8
8, 7
...

但是也有这个数组的功能,轻松取第一个数组行并将其放在最后。你能建议我在这种情况下使用什么?

P.S。我是新的所以我想选择最好的选择,这就是为什么我在这里。

3 个答案:

答案 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>,并创建一个代表该集合的对象一对数字,它的泛型类型参数。这些数据结构经过优化,可以快速插入和移除。