容器(Collection) List接口 Set接口

List接口 ,Set接口

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;

import com.hanqi.model.Book;

public class Main {

	
	public static void main(String[] args) {
		MyArrayList list = new MyArrayList(); //List接口的底层原理
		Book b = new Book("格林童话2");
		list.add(new Book("格林童话1"));
		list.add(b);
		list.add(new Book("格林童话3"));
		list.add(new Book("格林童话4"));
		list.add(new Book("格林童话5"));
		list.add(new Book("格林童话6"));
		System.out.println(list.size());
		System.out.println(list.get(2));
		System.out.println(list.remove(b));
		System.out.println(list.remove(new Book("格林童话5")));  //如果要剔除掉,你new了一个新的,
		//c.remove方法: 通过判断两个对象是否互相的equals来确定是不是该删除该对象,
		//自定义的类, 需要自己重写父类的equals方法
		//重写equals方法, 也应该重写hashCode方法
		System.out.println(list.size());
		
		//集合是一种容器
		Collection c1 = new ArrayList();  //Arraylist 是Collection的实现关系
		Collection c2 = new ArrayList();
		
		c1.add("aaa");  
		c1.add("bbb");
		c1.add("ccc");

		c2.add("aaa");
		c2.add("bbb");
		c2.add("ddd");
		
		System.out.println(c1.retainAll(c2));//返回一个boolean值, 
		//当list的内容被改变的时候返回true, 否则返回false
		//总结:像上面的情况,就是说先取出c1与c2的交集取出来给c1,现在的c1与之前的c1进行比较,如果内容改变就返回ture
		
		
		
		
		List list1 = new ArrayList();  //父类引用指向子类,List里的方法可以使用,ArrayList初始容量为10
		list1.add(100);
		list1.add("bbb");
		list1.add(new Book("黑猫警长"));
		list1.add(new String("ddd"));
		
	System.out.println(list1.get(2));  //获取的索引值为2的内容ccc 
		Object obj = list1.set(2, "frsgrdfsghdrtfhjdtg");  //有一个返回值,需要再get一下
		System.out.println(obj); //返回的是"ccc";
		System.out.println(list1.get(2));  //得到是"新设置的内容"
		
		list1.remove(100);
		list1.remove(new String("bbb"));
		list1.remove(new Book("黑猫警长"));
		list1.remove("ddd");
		System.out.println(list1.size());   //输出长度变为几
		
		int i = list1.indexOf(100);  //这个值第一次出现的索引值
		System.out.println(i);
		int i2 = list1.lastIndexOf("ddd"); //这个值最后一次出现的索引值
		System.out.println(i2);
/*	 List接口	get
		set(有一个返回值要注意 !)
		add
		remove(int)  //传的是索引值
		remove(Object)
		indexOf
		lastIndexOf*/
		
		泛型
		List <String> list = new ArrayList <String>();  //规定是字符串型的就是输入的是字符串,而且
		//是引用类型
		list.add("aa");//c.add(参数类型必须是Object)
		list.get(0);
		/*目的是为了免去强转Object的麻烦
		1, 装入集合的类型都被当作Object对待, 从而失去了自己的实际类型
		2, 集合中取出来的时候需要转型, 效率低, 易出错*/

        }

}

遍历

输出 aaa,bbb,ccc,ddd, 唯一不好之处在于无法取出索引值  ,for循环遍历, 1.5以后才出现的for(Objetc o : array) {}
            有优点有缺点,for each

原文地址:https://www.cnblogs.com/zuo72/p/7906432.html