集合
概念:
集合又称为容器,用于存储、提取、删除数据。(即增加,删除,查找)。JDK提供的集合API都包含在 java.util 包内。
类似于数组。
集合的分支 :
其关系如图:
ArrayList
常用方法:
1.add()
作用:
用于向List集合容器中添加元素。
是泛型:用于约束集合容器中元素的数据类型,如果省略,则默认为Object类型,因为Object是所有类的父类。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
System.out.println(list);
}
}
结果:
[Tom]
2.size()
作用:
用于获取集合中有多少个元素。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
int length=list.size();
System.out.println(length);
}
}
结果:
1
3.get();
作用:
获取指定索引(从0开始)位置的元素。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
System.out.println(list.get(2));
}
}
结果:
array
4.add( __, " ");
作用:
在指定位置添加元素,原来位置的元素后移。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.add(0, "Kate");
System.out.println(list.get(2));
}
}
结果:
lili
5.set(int i, Object element)
作用:
替换指定位置的元素。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
System.out.println(list.get(2));
}
}
结果:
Lucy
6.clear()
作用:
清空List集合中的所有元素。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
System.out.println(list.get(2));
list.clear();
System.out.println(list);
}
}
结果:
Lucy
[]
7.isEmpty()
作用:
用于判断集合容器中有没有元素,返回布尔类型。
如果没有,则true。
有则为flase。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
System.out.println(list.get(2));
boolean flag = list.isEmpty();
System.out.println(flag);
list.clear();
System.out.println(list);
boolean flag2 = list.isEmpty();
System.out.println(flag2);
}
}
结果:
Lucy
false
[]
true
8.contains(Object o)
作用:
用来判断集合容器中是否含所有参数元素。
没有这个元素则返回flase。
有则返回true。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
boolean flag = list.contains("Jim");
System.out.println(flag);
}
}
结果:
false
思考:判断过程是什么?
我们可以按住Ctrl点击鼠标进入contains内部,取得内部代码为:
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
o即为你要查找的那个元素jim。由于进入之后将o定义为Object类型,所以此时他是上转型对象。而由于查找的元素不为空,所以进入else分支。进入if语句时,o.equals(elementData[i])这句代码看着是调用的父类Object里的语句,实际上是调用的String类型里的。这就形成了一个多态。
多态是为了让其查找到所有的类型,因为你集合里面并不一定全都是一种特定类型。
9.remove()
作用:
删除指定索引(从0开始)位置的元素,并将元素返回,并且后面元素前移。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
String str = list.remove(0);
System.out.println(list);
}
}
结果:
[lili, Lucy]
10.remove(Object o)
作用:
删除List集合中的xx元素,返回boolean类型,并后面元素前移。
注:
注意比较9和10的区别。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
String str = list.remove(0);
System.out.println(list);
list.remove("lili");
System.out.println(list.get(0));
}
}
结果:
[lili, Lucy]
Lucy
11.iterator()
作用:
将List集合中元素转到iterator变量中
原理:
判断当前“指针”下面是否还有元素,如果指针下面有元素,则移动指针并获取相应位置的元素。
例:
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
String str = list.remove(0);
System.out.println(list);
list.remove("lili");
System.out.println(list.get(0));
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
结果:
[lili, Lucy]
Lucy
Lucy
集合的遍历
三种方法:
第一种:常规方法
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
}
}
第二种:for-each
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
for(String name:list) {
System.out.println(name);
}
}
}
第三种:利用iterator方法
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String [] args) {
ArrayList <String>list =new ArrayList<String>();
list.add("Tom");
list.add("lili");
list.add("array");
list.set(2, "Lucy");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}