4

我正在学习Java。

在 Python 中,我可以:

my_list = [1,2,3,4]
my_new_list = my_list [::-1]
print my_new_list                # [4,3,2,1]

我可以在 Java 中使用任何方法在 int 数组上执行此操作吗?

Edit1:对不起这个不好的例子。my_list [::-2] 怎么样?

Edit2:我的意思是 my_list [::-2] 就像

my_list = [1,2,3,4]
my_new_list = my_list [::-2]
print my_new_list                # [4,2]

编辑3:Python中的跨步切片是每一步(步幅)“检查”列表中的项目。如果步骤为负,Python将从列表末尾到列表开头检查项目。例如:

my_list = [1,2,3,4,5,6,7,8,9]
my_list1 = my_list[::2]       # my_list1 becomes [1,3,5,7,9]
my_list2 = my_list[::3]       # my_list2 becomes [1,4,7]
my_list3 = my_list[::4]       # my_list3 becomes [1,5,9]
my_list4 = my_list[::-3]      # my_list4 becomes [9,6,3]
4

5 回答 5

4

您可以将数组转换为列表,然后Collections.reverse()在该列表上使用。

Integer a[]={1,2,3,4};
List <Integer> list = Arrays.asList(a);
System.out.println(list);
Collections.reverse(list);
System.out.println(list);

演示

于 2015-12-29T12:21:45.890 回答
1

你可以在 Java 8 中这样写

int a = { 1, 2, 3, 4 };
int step = -2;

int b = IntStream.range(0, a.length)
            .filter(i -> i%step == 0)
            .map(i -> a[(step < 0) ? a.length-i-1 : i])
            .toArray();

它应该适用于您提供的所有示例数组和步骤。

于 2015-12-29T13:22:39.480 回答
1

您可以通过以下方式进行操作,在Collections#reverse使用该方法的帮助下,我们首先必须将数组转换为列表,在反转列表后,我们将再次将其转换为数组。如果可能的话,你应该更好地使用List而不是数组。

public class Test {

    public static void main(String[] args) {
        Integer[] arr = new Integer[] { 1, 2, 3, 4 };
        List<Integer> list = Arrays.asList(arr);
        Collections.reverse(list);
        arr = list.toArray(new Integer[list.size()]);
        System.out.println(Arrays.toString(arr));
    }

}

输出

[4, 3, 2, 1]
于 2015-12-29T12:22:43.687 回答
0

Java没有你想要的内置东西,但你可以为它构建自己的逻辑,就像这样,只需将值放入val,例如 my_list[::2] 2 在这种情况下val将是2

public static void main (String[] args) throws java.lang.Exception
{
int ml[] = {1,2,3,4,5,6,7,8,9};
int val = -2;
ArrayList al = new ArrayList();
if(val>0){
for(int i = 0 ; i<ml.length;i+=val){
    al.add(ml[i]);
}
}
else if(val<0){
for(int i = ml.length-1 ;  i>=0; i+=val){
    al.add(ml[i]);
}   

}


for(int i = 0 ; i<al.size();i++){
    System.out.println(al.get(i));
}

}
于 2015-12-29T13:21:26.763 回答
0

Apache Commons Lang有一个实用方法:

ArrayUtils.reverse(int[] array)
于 2015-12-29T12:27:08.137 回答