package Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 容器中使用泛型
* 容器相关类都定义了泛型,我们在开发和工作中,在使用容器类时都要
* 使用泛型。这样,在容器的存储数据,读取数据时都避免了大量的类型
* 判断,非常便捷。
*
* 源码:
* Collection
* public interface List<E>{}
*
* Set
* public interface Set<E>{}
*
* Map
* Public interface Map<K,V>{}
*
* public interface Collection<E> extends Iterable<E>{}
*
* public interface Iterator<E>{}
*
* 接口都定义了泛型,因此我们在使用这些接口及其实现类时,都要使用泛型。
* **********************************************************
* Collection接口
* Collection表示一组对象,它是集中,收集的意思,Collection接口的两个
* 子接口是List、Set接口
* boolean add(Object element) 增加元素到容器中
* boolean remove(Object element) 从容器中移除元素
* boolean contains(Object element) 容器中是否包含该元素
* int size() 容器中元素的数量
* boolean isEmpty() 容器是否为空
* void clear() 清空容器中所有元素
* Iterator Iterator() 获得迭代器,用于遍历所有元素
* boolean containsAll(Collection c) 本容器是否包含c容器中的所有元素
* boolean addAll(Collection c) 将容器c中所有元素增加到本容器
* boolean removeAll(Collection c)溢出本容器和容器c都包含的元素
* boolean retainAll(Collection c)取本容器和容器c中都包含的元素,移除非交集元素
* Object[] toArray() 转化成Object数组
* @author pmc
*
*/
public class GenericTest2 {
public static void main(String[] args) {
List list=new ArrayList();
Map map=new HashMap<>();
Collection<String> cl=new ArrayList<String>();
System.out.println(cl.size());
System.out.println(cl.isEmpty());
cl.add("a");
cl.add("b");
System.out.println(cl);
System.out.println(cl.size());
cl.remove("a");//移除不是删除
System.out.println(cl);
Object[] obj=cl.toArray();//转Object数组
System.out.println(obj);
}
}
List->ArrayList 有序,可重复
测试集合,索引
package Test;
/**
* List是有序、可重复的容器。
* 有序:List中每个元素都有索引标记。可以根据元素的索引标记(在
* List中的位置)访问元素,从而精确控制这些元素。
* 可重复:List允许加入重复的元素。更确切的讲,List通常允许满足
* e1.equals(e2)返回[true]的元素重复加入容器。
*
* List接口常用的实现类有3个:ArrayList(数组)、LinkedList(列表)和Vector(线程安全数组)
*
* ArrayList底层是用数组实现的存储。特点:*查询效率高*,增删效率低,线程不安全。我们一般使用它。
* 涉及频繁增删使用LinkedList列表
* 涉及线程安全使用Vector
*
* 数组长度是有限的,而ArrayList是可以存放任意数量的对象,长度不受限制。
*
*/
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ListTest {
public static void main(String[] args){
test01();
test02();
}
//List集合操作
public static void test01(){
// Set<String> set=new HashSet<String>();
List<String> list01=new ArrayList<String>();
list01.add("aa");
list01.add("bb");
list01.add("cc");
List<String> list02=new ArrayList<String>();
list02.add("aa");
list02.add("dd");
list02.add("ee");
System.out.println("list01:"+list01);
// list01.addAll(list02);
//
// System.out.println("list01:"+list01);
list01.removeAll(list02);
System.out.println("list01:"+list01);
System.out.println(list01.contains(list02));
}
//List索引
public static void test02(){
List<String> list=new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("C");
System.out.println(list);
list.add("李四");
System.out.println(list);
list.remove(0);
System.out.println(list);
list.add(0, "王五");
System.out.println(list);
list.set(0, "宋六");
System.out.println(list);
System.out.println(list.get(1));
System.out.println(list.indexOf("C"));//第一次出现的索引位置
System.out.println(list.lastIndexOf("C"));//最后一次出现的索引位置
}
}