Collection 表示一组对象,它是集中、收集的意思。Collection接口的两个子接口是List、Set接口。
Collection中add方法只能填入对象,不能填入基本数据类型
Collection c = new ArrayList();
c.add(123);//此时123是包装类的123
c.add(new String(tom));
c.add(false);
//还可以填入自定义的类的对象
//cotains方法
System.out.println(c.cotains(new String(tom)));
//true相当于equals因为String类重写了equals方法所以是判断内容
//如果其他的类没有重写equals方法我们就不能比较内容了
public static void test1() {
Collection<String> c = new ArrayList<>();//增加一个泛型
System.out.println(c.size());//0
System.out.println(c.isEmpty());//true
c.add("小吴");
c.add("小佳");
Object[] obj = c.toArray();//非常常用的方法,转换成object数组
System.out.println(c.contains("小吴"));//true
System.out.println(obj);//[Ljava.lang.Object;@4554617c
System.out.println(c);//调用toString方法[小吴,小佳]
System.out.println(c.size());//2
System.out.println(c.isEmpty());//false
c.remove("小佳");//是移除而不是删除,是把这个对象的地址从容器中移出来而不是删除对象
System.out.println(c);//小吴
c.clear();//移除所有内容
System.out.println(c.size());//0
}
/*将数组转化成集合
List<String>list=Arrys.asList(new String[]{"aa","bb","cc"})
List中常用方法
List是有序、可重复的容器。
有序:List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。类似数组的索引下标
可重复:List允许加入重复的元素。更确切地讲,List通常允许满足 e1.equals(e2) 的元素重复加入容器。
除了Collection接口中的方法,List多了一些跟顺序(索引)有关的方法,参见下表:
public static void test2() {
List<String> l1 = new ArrayList<>();
l1.add("aa");
l1.add("bb");
l1.add("cc");
List<String> l2 = new ArrayList<>();
l2.add("aa");
l2.add("dd");
l2.add("ee");
list.addAll(list2); //将list2中所有元素都添加到list中
//l1.removeAll(l2);把相同的aa移出去,输出[bb.cc]
//l1.retainAll(l2);取相同的部分,输出[aa]
System.out.println(l1);
}
public static void test3(){
List<String>l1=new ArrayList<>();
l1.add("a");
l1.add("b");
l1.add("c");
l1.add("d");
System.out.println(l1);
l1.add(2,"wu");
System.out.println(l1);//运行结果[a,b,wu,c,d]不是替代而是插入占位
l1.remove(2);
System.out.println(l1);//运行结果[a, b, c, d]
l1.set(2,"wu");
System.out.println(l1);//运行结果[a, b, wu, d]修改2位置的字符串
l1.add("b");
System.out.println(l1);
System.out.println(l1.indexOf("b"));//运行结果是1 从索引位置的第一位开始 如果不存在就返回-1.
System.out.println(l1.lastIndexOf("b"));//运行结果是4,从索引最后一位开始向前找
}
遍历list
public class TestFor {
public static void main(String[] args){
ArrayList c = new ArrayList();
c.add(123);//此时123是包装类的123
c.add(456);
c.add(new String("tom"));
c.add(false);
//内部依然是迭代器
for(Object obj:c){
System.out.println(obj);
}
//法2
Iterator iterator = c.iterator();
while(iterator.hasNext()){//相当于判断iterator中还有没有元素
System.out.println(iterator.next());
}
//法3
for(int i=0;i<c.size();i++){
System.out.println(c.get(i));
}
}
}