ArrayList Android

– Thực tế, khi để quản lý 1 danh sách hóa đơn, thông tin khách hàng, học sinh …v..v..Chúng ta sẽ cần đến một khái niệm đó là mảng các đối tượng. Nghĩa là mỗi thành phần trong mảng là các đối tượng, các đối tượng lại có rất nhiều thuộc tính. – Mảng thông thường có thể đáp ứng được một phần, nhưng chưa đủ. Vì trong quá trình thao tác dữ liệu, ta lại cần thêm, xóa, sửa, chèn. v..v.v.. Nghĩ đến các thao tác này, nếu bạn nào đã từng học C và Pascal chắc chắn sẽ nghĩ tới con trỏ, vì chỉ có con trỏ mới có thể. Nhưng làm việc với con trỏ trong C và Pascal khá mệt mỏi và dài dòng, khó hiểu, thậm chí nhiều bạn không thể học nổi khi gặp phần này và bỏ cuộc với lập trình vì nó! ^^

– Nói vậy các bạn đừng lo lắng, vì ArrayList học cực kỳ dễ dàng, thậm chí bạn không hiểu con trỏ bạn vẫn có thể thao tác được!

– ArrayList có thể nói nó là 1 phiên bản mới của mảng. Nó cũng truy xuất dữ liệu theo chỉ số, nhưng nó có nhiều điều vượt trội hơn rất nhiều so với mảng!

**Một trong những điều khiến mình rất thích khi học các bài Java cơ bản đó chính là ArrayList.

The ArrayList class is a resizable array, which can be found in the java.util package.

The difference between a built-in array and an ArrayList in Java, is that the size of an array cannot be modified (if you want to add or remove elements to/from an array, you have to create a new one). While elements can be added and removed from an ArrayList whenever you want. The syntax is also slightly different:

Create an ArrayList object called cars that will store strings:

import java.util.ArrayList; // import the ArrayList class ArrayList cars = new ArrayList(); // Create an ArrayList object

If you don't know what a package is, read our Java Packages Tutorial.

Add Items

The ArrayList class has many useful methods. For example, to add elements to the ArrayList, use the add() method:

import java.util.ArrayList; public class Main {   public static void main(String[] args) {     ArrayList cars = new ArrayList();     cars.add("Volvo");     cars.add("BMW");     cars.add("Ford");     cars.add("Mazda");     System.out.println(cars);   } }

Try it Yourself »

Access an Item

To access an element in the ArrayList, use the get() method and refer to the index number:

cars.get(0);

Try it Yourself »

Remember: Array indexes start with 0: [0] is the first element. [1] is the second element, etc.

Change an Item

To modify an element, use the set() method and refer to the index number:

cars.set(0, "Opel");

Try it Yourself »

Remove an Item

To remove an element, use the remove() method and refer to the index number:

cars.remove(0);

Try it Yourself »

To remove all the elements in the ArrayList, use the clear() method:

cars.clear();

Try it Yourself »

ArrayList Size

To find out how many elements an ArrayList have, use the size method:

cars.size();

Try it Yourself »

Loop Through an ArrayList

Loop through the elements of an ArrayList with a for loop, and use the size() method to specify how many times the loop should run:

public class Main {   public static void main(String[] args) {     ArrayList cars = new ArrayList();     cars.add("Volvo");     cars.add("BMW");     cars.add("Ford");     cars.add("Mazda");     for (int i = 0; i < cars.size(); i++) {       System.out.println(cars.get(i));     }   } }

Try it Yourself »

You can also loop through an ArrayList with the for-each loop:

public class Main {   public static void main(String[] args) {     ArrayList cars = new ArrayList();     cars.add("Volvo");     cars.add("BMW");     cars.add("Ford");     cars.add("Mazda");     for (String i : cars) {       System.out.println(i);     }   } }

Try it Yourself »

Other Types

Elements in an ArrayList are actually objects. In the examples above, we created elements (objects) of type "String". Remember that a String in Java is an object (not a primitive type). To use other types, such as int, you must specify an equivalent wrapper class: Integer. For other primitive types, use: Boolean for boolean, Character for char, Double for double, etc:

Create an ArrayList to store numbers (add elements of type Integer):

import java.util.ArrayList; public class Main {   public static void main(String[] args) {     ArrayList myNumbers = new ArrayList();     myNumbers.add(10);     myNumbers.add(15);     myNumbers.add(20);     myNumbers.add(25);     for (int i : myNumbers) {       System.out.println(i);     }   } }

Try it Yourself »

Sort an ArrayList

Another useful class in the java.util package is the Collections class, which include the sort() method for sorting lists alphabetically or numerically:

Sort an ArrayList of Strings:

import java.util.ArrayList; import java.util.Collections;  // Import the Collections class public class Main {   public static void main(String[] args) {     ArrayList cars = new ArrayList();     cars.add("Volvo");     cars.add("BMW");     cars.add("Ford");     cars.add("Mazda");     Collections.sort(cars);  // Sort cars     for (String i : cars) {       System.out.println(i);     }   } }

Try it Yourself »

Sort an ArrayList of Integers:

import java.util.ArrayList; import java.util.Collections;  // Import the Collections class public class Main {   public static void main(String[] args) {     ArrayList myNumbers = new ArrayList();     myNumbers.add(33);     myNumbers.add(15);     myNumbers.add(20);     myNumbers.add(34);     myNumbers.add(8);     myNumbers.add(12);     Collections.sort(myNumbers);  // Sort myNumbers     for (int i : myNumbers) {       System.out.println(i);     }   } }

Try it Yourself »



I am making a guessing game for as my School project, but I am quite new to Android Studio and Java.

At the moment my code looks like this:

public class MainActivity extends AppCompatActivity { public int score = 0; int random = random(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button correct = (Button) findViewById(R.id.correct); Button other = (Button) findViewById(R.id.other); Button newGame = (Button) findViewById(R.id.newGame); TextView words = (TextView) findViewById(R.id.words); } public Integer random (){ int random = (int )(Math.random() * 5); return random; } private String list[] = {"Dog", "Cat", "Mouse", "Elephant", "Rat", "Parrot"}; public void clickedButton(View view) { TextView words = (TextView) findViewById(R.id.words); if (view.getId()== R.id.newGame) { words.setText(list[random]); score = 0; Log.i("score", "score = " + score); } if (view.getId() == R.id.correct) { // set maybe new array so new textview does not give the same value words.setText(list[random]); score = score +1; Log.i("score", "score = " + score); } if (view.getId() == R.id.other) { // set maybe new array so new textview does not give the same value words.setText(list[random]); Log.i("score", "score = " + score); } }

}

Idea is simple. I have my array with (at the moment) 6 words in it. So as I launch the game it gives me a random word on screen which I have to describe to others. If they guess it right I press correct, I get another word, if not I can pass and get another word... Well the problem I see is that there is chance that I get the same word over again. So I thought there should be a way how to fix this problem.

I thought about adding like if statements like if index 1 or 2 or 3 then give another word but if I had 100 words it would be monkey work to do it.

So I think there should be a chance how I can delete words from like temp. array, but there is no in-built method to do it.

I was reading that there are those arrayLists and lists but would not it be easier to use Array? and maybe some tips how to?