**using `JavaObject` in B4A** to compare two lists.
---
## 1️⃣ Check if two B4A `List` objects are **exactly equal** (same order + same content)
In B4A, `List` is internally a Java `ArrayList`, so you can call Java methods directly using `JavaObject`.
```basic
Dim l1 As List
Dim l2 As List
l1.Initialize
l2.Initialize
l1.AddAll(Array("A","B","C"))
l2.AddAll(Array("A","B","C"))
Dim jo1 As JavaObject = l1
Dim equal As Boolean = jo1.RunMethod("equals", Array(l2))
Log(equal) ' True
```
✔ Same size
✔ Same elements
✔ Same order
---
## 2️⃣ Compare lists **ignoring order** (using `containsAll`)
```basic
Dim jo1 As JavaObject = l1
Dim jo2 As JavaObject = l2
Dim sameSize As Boolean = l1.Size = l2.Size
Dim contains1 As Boolean = jo1.RunMethod("containsAll", Array(l2))
Dim contains2 As Boolean = jo2.RunMethod("containsAll", Array(l1))
Dim equal As Boolean = sameSize And contains1 And contains2
```
✔ Order does not matter
⚠️ Not recommended if lists contain duplicates
---
## 3️⃣ Compare using `HashSet` (ignores order and duplicates)
```basic
Dim joSet1, joSet2 As JavaObject
joSet1.InitializeNewInstance("java.util.HashSet", Array(l1))
joSet2.InitializeNewInstance("java.util.HashSet", Array(l2))
Dim equal As Boolean = joSet1.RunMethod("equals", Array(joSet2))
```
✔ Ignores order
✔ Ignores duplicate values
---
## 4️⃣ Get the **difference** between two lists
```basic
Dim diff As List
diff.Initialize
diff.AddAll(l1)
Dim joDiff As JavaObject = diff
joDiff.RunMethod("removeAll", Array(l2))
Log("Only in l1: " & diff)
```
Differences on both sides:
```basic
Dim onlyIn1, onlyIn2 As List
onlyIn1.Initialize : onlyIn1.AddAll(l1)
onlyIn2.Initialize : onlyIn2.AddAll(l2)
Dim jo1 As JavaObject = onlyIn1
Dim jo2 As JavaObject = onlyIn2
jo1.RunMethod("removeAll", Array(l2))
jo2.RunMethod("removeAll", Array(l1))
```
---
## 📌 Quick recommendation
| Goal | Method |
| ----------------- | --------------- |
| Exact equality | `equals()` |
| Ignore order | `containsAll()` |
| Ignore duplicates | `HashSet` |
| Find differences | `removeAll()` |