3. Enhanced for Loop1) Function:
Iterate over the container of the storage object
2) How Jdk5 used to iterate 3) enhance the For loop iterative algebra Group
String [] arr = {"A", "B", "C"}; Static definition of an array, only when the array is first defined
Traditional way
for (int i=0; i<arr.length; i++) {
I, in turn, represent the array's Corner label
Strings = Arr[i];
System.out.println (s);
}
System.out.println ("-------------------------------------");
In Jdk5 we can use the enhanced for loop iteration
Enhanced for loop two arguments are written in parentheses, the first is declaring a variable, and the variable type must be the type of the array element
The second is a container that needs to be iterated
The For loop loops the length of the container, assigning the n-1 element of the container to the declared variable each time
for (String S:arr) {
Loop body, perform arr.length
Each time the n-1 element in Arr is given s
System.out.println (s); //
}
4) Single-row collection collection
List List = new ArrayList ();
List.add ("AAA");
List.add ("BBB");
List.add ("CCC");
Traditional Way 1
/* 1. Get iterators
Iterator iter = List.iterator ();
2. Loop to determine if the iterator has the next
while (Iter.hasnext ()) {
Stringstr = (String) iter.next (); Moves the pointer of the iterator to the next and returns the element that is currently pointing to the iteration
System.out.println (str);
}
*/
Traditional Way 2
For (Iterator iter=list.iterator (); Iter.hasnext ();) {
Strings = (String) iter.next ();
System.out.println (s);
}
System.out.println ("--------------------------------");
Enhanced for loop, does not use a generic collection can I use an enhanced for loop iteration? Yes
for (Object obj:list) {
Strings = (String) obj;
System.out.println (s);
}
5) Double Row set map
Map map = new HashMap ();
Map.put ("A", "AAA");
Map.put ("B", "BBB");
Map.put ("C", "CCC");
Traditional way Iteration 1
1. Get all the keys
Set keys = Map.keyset ();
2. Iterate keys to get all keys
Iterator iter = Keys.iterator ();
while (Iter.hasnext ()) {
Stringkey = (String) iter.next (); A b C
3. Obtain the corresponding value according to key
StringValue = (String) map.get (key);
System.out.println (key+ "=" + value);
}
System.out.println ("---------------------------------");
Traditional way 2, must master this way
1. Get all key-value pairs entry objects
Set Entrys = Map.entryset ();
2. Iterate through all entry
iter = Entrys.iterator ();
while (Iter.hasnext ()) {
Map.entryentry = (Entry) iter.next ();
Get key and value separately
Stringkey = (String) entry.getkey ();
StringValue = (String) entry.getvalue ();
System.out.println (key+ "=" + value);
}
System.out.println ("-------------------------------------");
SYSTEM.OUT.PRINTLN ("Enhanced for loop iteration,");
Enhanced for loop iterations,
In principle, the map collection cannot be iterated using the enhanced for loop,
Because the enhanced for loop can only iterate over a collection that implements the Iterable interface
Iterable is a newly defined interface in Jdk5, a method iterator method
Only the class that implements the Iterable interface can guarantee that there must be a iterator method
Java has such a qualification because it is enhanced internally by the For loop or by an iterator.
In fact, we can use the enhanced for loop in some way
For (Object Obj:map.entrySet ()) {
Obj in turn represents the entry
Map.entryentry = (Entry) obj;
System.out.println (Entry.getkey () + "=" + Entry.getvalue ());
}
6) Collection Iteration Attention issues
The collection cannot be deleted or removed during the iteration of the collection using iterators
@Test
public void Test4 () {
Listlist = new ArrayList ();
List.add ("Wangwu");
List.add ("Zhangsan");
List.add ("Lisi");
Iteratoriter = List.iterator ();
while (Iter.hasnext ()) {
Stringname = (String) iter.next ();
if ("Wangwu". Equals (name)) {
Delete from the collection
List.remove (name);
Methods to call iterators for deleting elements during an iteration
Iter.remove (); Delete the collection of my iterations the last element of my iteration
}
}
1 2 4
System.out.println (List.size ());
}
@Test
public void Test5 () {
Listlist = new ArrayList ();
List.add ("AA");
List.add ("BB");
Using Listiterator iterators
Listiteratorlistiterator = List.listiterator ();
while (Listiterator.hasnext ()) {
Listiterator.next ();
Adding elements during an iteration
Listiterator.add ("CC");
}
System. out. println (List.size ());
}
7) Enhanced for loop attention issues
element cannot be assigned when using enhanced for loop
Int[] arr = {A-i};
for (int num:arr) {
num= 0;
}
System.out.println (arr[1]);
Publicclass Demo3 {
@Test
public void Test3 () {
Map map=new HashMap ();
Map map2=newlinkedhashmap<k, v> ();
Map.put ("1", "AAA");
Map.put ("2", "BBB");
Map.put ("3", "CCC");
Traditional Way 1
Set Set=map.keyset ();
Iterator It=set.iterator ();
while (It.hasnext ()) {
stringkey= (String) it.next ();
Stringvalue= (String) map.get (key);
System.out.println ("key=" +key+ ", value=" +value);
}
Traditional Way 2
Set Set2=map.entryset ();
Iterator It2=set2.iterator ();
while (It2.hasnext ()) {
Map.entry entry= (Entry) it2.next ();
System.out.println ("key=" +entry.getkey () + ", value=" +entry.getvalue ());
}
1 ways to enhance a For loop
For (Object Obj:map.keySet ()) {
stringkey2= (String) obj;
Stringvalue2= (String) map.get (Key2);
System.out.println ("key2=" +key2+ ", value2=" +value2);
}
2 ways to enhance A For loop
For (Objectobj:map.entrySet ()) {
map.entryentry3= (Entry) obj;
String key3= (String) Entry3.getkey ();
stringvalue3= (String) entry3.getvalue ();
System.out.println ("key3=" +key3+ ", value3=" +value3);
}
Issues to be aware of when enhancing for loops: data only
int arr[]={1,2,3};
for (int i:arr) {
i=10;
}
System.out.println (arr[0]);//1
List li=new ArrayList ();
Li.add ("1");
for (Object Obj:li) {
obj= "888";
}
System.out.println (li.get (0));//1
}
}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Java Enhanced for Loop