集合
import java.util.ArrayList;
import java.util.Collection;
/**
* 集合的引出:容器有:数组(存储长度是固定的),字符串缓冲区(只能存储字符串),
* 我们需要一个长度不固定的容器来存储我们的对象,Java为我们提供了一个容器:集合Collection
* Collection:子接口有两个,两个子接口分别对应多个子实现类,多个集合数据结构不同,但是他们有共性内容,将共性内容
* 常用功能:
* 添加功能:
* boolean add(Object e) 只要添加元素就返回true
* 删除功能:
* void clear() :删除集合中所有元素(暴力删除)
* boolean remove(Object o):删除集合中的指定元素
* 判断功能:
* boolean contains(Object o):集合中是否包含指定的元素
* boolean containsAll(Collection c) 一个集合是否包含另一个集合
* 获取功能:
* int size() :获取集合中的元素数
* 交集功能:
* boolean retainAll(Collection c) A集合对B集合取交集元素
* 删除功能:
* boolean removeAll(Collection c) 删除一个集合中所有元素
* 转换功能:
* Object[] toArray() :将集合转换成数组
* */
public class Text1 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("Java");
c.add("apple");
System.out.println(c);
//数组遍历方法
Object[] o = c.toArray();
for(int i = 0;i<o.length;i++) {
System.out.println(o[i]);
}
Collection cc = new ArrayList();
cc.add("hello");
cc.add("Java");
//删除Java,只要删除就返回true
boolean b= c.remove("Java");
System.out.println(b);
//判断是否包含hello
System.out.println(c.contains("hello"));
//判断包含(一个集合包含另一个集合的所有才算是包含,返回true)
System.out.println(c.containsAll(cc));
//删除(删除一个元素就返回true)
System.out.println(c.removeAll(cc));
//两个集合的交集,将交集放在c中
System.out.println(c.retainAll(cc));
}
}
迭代器
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 迭代器Iterator
* Iterator iterator() :集合的迭代器方法(获取集合的迭代器)
* Iterator :接口中有以下的方法:
* boolean hasNext() :如果有元素可以迭代,那么返回true,否则返回false
* Object next()返回迭代的下一个元素。
* */
public class Text2 {
//迭代器方式遍历集合
public static void main(String[] args) {
//创建对象
Person p1 = new Person("张三",12,110);
Person p2 = new Person("李四",13,111);
Person p3 = new Person("赵五",14,112);
//创建集合
Collection c = new ArrayList();
//在集合中添加元素
c.add(p1);
c.add(p2);
c.add(p3);
//通过集合获取迭代器
Iterator it = c.iterator();
while(it.hasNext()) {//判断是否有下一个元素可以迭代
Person s = (Person)(it.next());//返回下一个元素,强制类型转换为Person
System.out.println(s);
}
}
}
List集合
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
*List集合:有序的 (存储和取出一致),可以允许重复元素
*Collection有两个子接口:List(有序) Set(无序性(不能保证迭代的顺序,基于hashMap),并且元素不能重复)
* */
public class Text3 {
public static void main(String[] args) {
List l = new ArrayList();
l.add("hello");
l.add("world");
l.add("Jave");
l.add("hello");
//使用迭代器遍历
Iterator it = l.iterator();
while(it.hasNext()) {//判断是否有下一个可以迭代的元素
String s = (String)(it.next());//返回下一个元素,并转换为String类型
System.out.println(s);
}
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
/**
* List集合特有功能
* 添加功能
* void add(int index,Object element):在指定位置处添加指定元素
* 获取功能
* Object get(int index)返回列表中指定位置的元素。
* 删除功能:
* Object remove(int index):删除指定位置处的元素
* 修改功能
* Object set(int index, Object element):用指定element元素替换掉指定位置处的元素
* List集合有自己专属的迭代器:ListIterator listIterator()列表迭代器
* */
public class Text4 {
public static void main(String[] args) {
List l = new ArrayList();
l.add("abc1");
l.add("abc2");
l.add("abc3");
l.add(1,"abc");//按索引添加功能
l.remove(3);//按索引删除功能
l.set(0, "def");//按索引修改功能
ListIterator it = l.listIterator();
while(it.hasNext()) {
String s = (String)(it.next());
System.out.println(s);
}
//使用size来遍历list集合
for(int i = 0;i<l.size();i++) {
System.out.println(l.get(i));
}
}
}
list专属迭代器
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
//ListIterator有逆向遍历功能,但需要在正向遍历前提下
// boolean hasPrevious():判断是否有上一个可以迭代 元素(逆向遍历)
// Object previous():返回上一个元素
//如果集合中有Java,就添加||
public class Text5 {
public static void main(String[] args) {
List l = new ArrayList();
l.add("hello");
l.add("Java");
l.add("hello");
l.add("Java");
l.add("hello");
//方式1利用迭代器
ListIterator it = l.listIterator();
while(it.hasNext()) {
String s = (String)(it.next());
if("Java".equals(s)) {
it.add("||");//往迭代器中添加,在该元素之后添加
}
}
System.out.println(l);
//方式二size()get()方法
for(int i= 0;i<l.size();i++) {
String str = (String)l.get(i);
if(str.equals("Java")) {
l.add("||");//在列表之后添加
}
}
System.out.println(l);
}
}