How to move specific item in array list to the first item
Solution 1
What you want is a very expensive operation in an ArrayList
. It requires shifting every element between the beginning of the list and the location of C
down by one.
However, if you really want to do it:
int index = url.indexOf(itemToMove);
url.remove(index);
url.add(0, itemToMove);
If this is a frequent operation for you, and random access is rather less frequent, you might consider switching to another List
implementation such as LinkedList
. You should also consider whether a list is the right data structure at all if you're so concerned about the order of elements.
Solution 2
Do this:
- Remove the element from the list:
ArraylistObj.remove(object);
- Add the element back to the list at specific position:
ArrayListObj.add(position, Object);
As per your code use this :
url.remove("C");
url.add(0,"C");
Solution 3
Another solution, just keep swaping from 0
to indexOf(itemToMove)
.
This is my Kotlin version:
val list = mutableListOf('A', 'B', 'C', 'D', 'E')
(0..list.indexOf('C')).forEach {
Collections.swap(list, 0, it)
}
Sorry I am unfamiliar with Java but learned a little Kotlin. But the algorithm is the same.
Solution 4
The problem is, you swap C with A, so A B C D E becomes C B A D E.
You could try something like this:
url.remove(itemToMove);
url.add(0, itemToMove);
Or if url
is a LinkedList
:
url.remove(itemToMove);
url.addFirst(itemToMove);
Comments
-
user782104 almost 2 years
For example : A list
A B C D E
Given C , Switch to
C A B D E
Notice that the array size will change, some items may removed in run times
Collections.swap(url, url.indexOf(itemToMove), 0);
This statement is not working because it output C B A D E not C A B D E , how to fix it?
Thanks.
-
Pankaj Kumar over 10 yearsisn't it will increase the size of list?
-
Venkata Krishna over 10 yearsThen remove the element from list by using url.remove("C"); and add element at zero position by using url.add(0,"C");
-
Aditya over 10 yearsif speed is a criteria, then maybe you should also look at commons.apache.org/proper/commons-collections/javadocs/…
-
AJW over 4 years@Aditya broken link now.
-
Aditya over 4 yearsHere is the new link - commons.apache.org/proper/commons-collections/javadocs/api-4.4/…