There are several built-in data structures in Android that developers can use to store and organize data in their applications. Some of the most commonly used data structures in Android include:
- Array: A fixed-size collection of elements of the same data type.
- ArrayList: A resizable array that can store elements of any data type.
- LinkedList: A doubly linked list data structure that allows for efficient insertion and deletion of elements.
- HashMap: A map data structure that stores key-value pairs and allows for fast lookups using the keys.
- SparseArray: Similar to a HashMap, but optimized for use with integer keys.
- SharedPreferences: A key-value storage system that allows for the storage of small amounts of data in the application’s private data storage.
These data structures are provided by the Android Framework, and developers can use them to store and retrieve data in their applications.
Using some of the data structures in Java and Kotlin:
int [] myArray = new int [ 5 ];
myArray[ 0 ] = 1 ;
myArray[ 1 ] = 2 ;
|
val myArray = intArrayOf( 1 , 2 , 3 , 4 , 5 )
|
ArrayList<String> myList = new ArrayList<>();
myList.add( "item1" );
myList.add( "item2" );
|
val myList = arrayListOf( "item1" , "item2" , "item3" )
|
LinkedList<Integer> myList = new LinkedList<>();
myList.add( 1 );
myList.add( 2 );
|
val myList = LinkedList<Int>() myList.add( 1 )
myList.add( 2 )
|
HashMap<String, Integer> myMap = new HashMap<>();
myMap.put( "key1" , 1 );
myMap.put( "key2" , 2 );
|
val myMap = hashMapOf( "key1" to 1 , "key2" to 2 )
|
SparseArray<String> mySparseArray = new SparseArray<>();
mySparseArray.put( 1 , "item1" );
mySparseArray.put( 2 , "item2" );
|
val mySparseArray = SparseArray<String>() mySparseArray.put( 1 , "item1" )
mySparseArray.put( 2 , "item2" )
|
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString( "key1" , "value1" );
editor.apply(); |
val sharedPref = getPreferences(Context.MODE_PRIVATE) val editor = sharedPref.edit() editor.putString( "key1" , "value1" )
editor.apply() |
Example Android App
Below is a sample android app that uses an Array, ArrayList, LinkedList, HashMap, SparseArray, SharedPreferences, and SQLite to store and retrieve data.
Step 1: Create a New Project in Android Studio
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio.
Step 2: Working with the activity_main.xml file
Navigate to app > res > layout > activity_main.xml and add the below code to it. Comments are added in the code to get to know in detail.
< LinearLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical"
tools:context = ".MainActivity" >
< TextView
android:id = "@+id/array_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Array Element: " />
< TextView
android:id = "@+id/arraylist_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "ArrayList Element: " />
< TextView
android:id = "@+id/linkedlist_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "LinkedList Element: " />
< TextView
android:id = "@+id/hashmap_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "HashMap Element: " />
< TextView
android:id = "@+id/sparsearray_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "SparseArray Element: " />
< TextView
android:id = "@+id/sharedpreferences_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "SharedPreferences Element: " />
< TextView
android:id = "@+id/sqlite_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "SQLite Element: " />
</ LinearLayout >
|
Step 3: Working with the MainActivity file
Navigate to app > java > your app’s package name > MainActivity file and add the below code to it. Comments are added in the code to get to know in detail.
package com.gfg.android.kotlinproject
import android.os.Bundle
import android.util.SparseArray
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity() {
private val myArray = intArrayOf( 1 , 2 , 3 )
private val myArrayList = ArrayList<String>()
private val myLinkedList = LinkedList<Any>()
private val myHashMap = HashMap<String, String>()
private val parsingArray = SparseArray<Any>()
override fun onCreate(savedInstanceState: Bundle?) {
super .onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Find views by ID
val arrayText = findViewById<TextView>(R.id.array_text)
val arrayListText = findViewById<TextView>(R.id.arraylist_text)
val linkedListText = findViewById<TextView>(R.id.linkedlist_text)
val hashMapText = findViewById<TextView>(R.id.hashmap_text)
val sparseArrayText = findViewById<TextView>(R.id.sparsearray_text)
val sharedPreferencesText = findViewById<TextView>(R.id.sharedpreferences_text)
val sqliteText = findViewById<TextView>(R.id.sqlite_text)
// Initialize data for
// ArrayList and LinkedList
myArrayList.add( "Hello" )
myArrayList.add( "World" )
myLinkedList.add( "Hello" )
myLinkedList.add( "World" )
// Initialize data for HashMap
myHashMap[ "key1" ] = "value1"
myHashMap[ "key2" ] = "value2"
// Initialize data for SparseArray
parsingArray.put( 1 , "Hello" )
parsingArray.put( 2 , "World" )
// Initialize SharedPreferences
val sharedPreferences = getSharedPreferences( "prefs" , MODE_PRIVATE)
sharedPreferences.edit().putString( "key" , "value" ).apply()
// Initialize SQLite
val sqLiteDatabase = openOrCreateDatabase( "mydb" , MODE_PRIVATE, null )
sqLiteDatabase.execSQL( "CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, data TEXT)" )
sqLiteDatabase.execSQL( "INSERT INTO mytable (data) VALUES ('Hello World')" )
// Display data in TextViews
arrayText.text = "Array Element: " + myArray[ 0 ]
arrayListText.text = "ArrayList Element: " + myArrayList[ 0 ]
linkedListText.text = "LinkedList Element: " + myLinkedList[ 0 ]
hashMapText.text = "HashMap Element: " + myHashMap[ "key1" ]
sparseArrayText.text = "SparseArray Element: " + parsingArray[ 1 ]
sharedPreferencesText.text = "SharedPreferences Element: " + sharedPreferences.getString( "key" , "" )
// Display data from SQLite
val cursor = sqLiteDatabase.rawQuery( "SELECT * FROM mytable" , null )
if (cursor.moveToFirst()) {
sqliteText.text = "SQLite Element: " + cursor.getString( 1 )
}
cursor.close()
}
} |
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
public class MainActivity extends AppCompatActivity {
private final int [] myArray = { 1 , 2 , 3 };
private final ArrayList<String> myArrayList = new ArrayList<>();
private final LinkedList<Object> myLinkedList = new LinkedList<>();
private final HashMap<String, String> myHashMap = new HashMap<>();
private final android.util.SparseArray<Object> parsingArray = new android.util.SparseArray<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find views by ID
TextView arrayText = findViewById(R.id.array_text);
TextView arrayListText = findViewById(R.id.arraylist_text);
TextView linkedListText = findViewById(R.id.linkedlist_text);
TextView hashMapText = findViewById(R.id.hashmap_text);
TextView sparseArrayText = findViewById(R.id.sparsearray_text);
TextView sharedPreferencesText = findViewById(R.id.sharedpreferences_text);
TextView sqliteText = findViewById(R.id.sqlite_text);
// Initialize data for
// ArrayList and LinkedList
myArrayList.add( "Hello" );
myArrayList.add( "World" );
myLinkedList.add( "Hello" );
myLinkedList.add( "World" );
// Initialize data for HashMap
myHashMap.put( "key1" , "value1" );
myHashMap.put( "key2" , "value2" );
// Initialize data for SparseArray
parsingArray.put( 1 , "Hello" );
parsingArray.put( 2 , "World" );
// Initialize SharedPreferences
SharedPreferences sharedPreferences = getSharedPreferences( "prefs" , MODE_PRIVATE);
sharedPreferences.edit().putString( "key" , "value" ).apply();
// Initialize SQLite
SQLiteDatabase sqLiteDatabase = openOrCreateDatabase( "mydb" , MODE_PRIVATE, null );
sqLiteDatabase.execSQL( "CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, data TEXT)" );
sqLiteDatabase.execSQL( "INSERT INTO mytable (data) VALUES ('Hello World')" );
// Display data in TextViews
arrayText.setText( "Array Element: " + myArray[ 0 ]);
arrayListText.setText( "ArrayList Element: " + myArrayList.get( 0 ));
linkedListText.setText( "LinkedList Element: " + myLinkedList.get( 0 ));
hashMapText.setText( "HashMap Element: " + myHashMap.get( "key1" ));
sparseArrayText.setText( "SparseArray Element: " + parsingArray.get( 1 ));
sharedPreferencesText.setText( "SharedPreferences Element: " + sharedPreferences.getString( "key" , "" ));
// Display data from SQLite
Cursor cursor = sqLiteDatabase.rawQuery( "SELECT * FROM mytable" , null );
if (cursor.moveToFirst()) {
sqliteText.setText( "SQLite Element: " + cursor.getString( 1 ));
}
cursor.close();
}
} |
In this example, we are using an array to store integers, an ArrayList to store strings, a LinkedList to store objects, a HashMap to store key-value pairs, a SparseArray to store key-value pairs with integer keys, SharedPreferences to store simple data and SQLite to store complex data. We also show how to insert data into these data structures and how to retrieve data from these data structures using various methods. In the case of SQLite, we also show how to create a table and insert data into the table using SQLite database.
Note: In a real-world app, more robust methods and classes would be used for managing the SQLite database and for handling the data