30/09/2018, 23:40

Đảo ngược các phần tử trong arrayList trong java

Em đang viết chương trình đảo ngược lại thứ tự các phần tử trong ArrayList nhưng khi chạy chương trình lại ra như thế này

[khong, mot, hai, hai, mot, khong]
import java.util.ArrayList;
public class class1
{
    public static void main(String[] args){
        ArrayList<String> goc= new ArrayList<String>();
        goc.add("khong");
        goc.add("mot");
        goc.add("hai");
        goc.add("ba");
        goc.add("bon");
        goc.add("nam");
        ArrayList<String> sao=goc;
        for(int i=0;i<sao.size();i++)goc.set(sao.size()-1-i,sao.get(i));
        System.out.println(goc);
    }
 
}

Nhờ mọi người giải thích giúp em với ạ!

Quân viết 01:42 ngày 01/10/2018
ArrayList<String> sao=goc;

Ý bạn đây là phép copy từ goc sang sao hả. Gán trực tiếp thế này thì goc với sao là 1 thằng, thay đổi trên 1 trong 2 thằng cũng dẫn đến thay đổi cả 2 thằng
nên sửa thành

ArrayList<String> sao= new ArrayList<>(goc.size());
for(int i = goc.size() - 1; i>= 0; i--){
    sao.add(goc.get(i));
}
goc = sao;
Tung Dao viết 01:42 ngày 01/10/2018

Trong Java có sẵn API cho việc này, bạn có thể tham khảo

ArrayList aList = new ArrayList();
//Add elements to ArrayList object
aList.add("1");
aList.add("2");
aList.add("3");
aList.add("4");
aList.add("5");
Collections.reverse(aList);
System.out.println("After Reverse Order, ArrayList Contains : " + aList);
Trí Vũ viết 01:44 ngày 01/10/2018

Cám ơn bạn. Mình tự học trên mạng nên nhiều chỗ cũng rõ lắm

Tâm Ninja viết 01:49 ngày 01/10/2018

Bạn nên tìm hiểu về debug trong Java. Công cụ này rất hữu ích để bạn biết được code của mình đã chạy như thế nào. Tốt cho việc học và cả công việc sau này nữa.

Bài liên quan
0