java-集合应用与训练

一.大纲

 * 集合:
 * Collection       List:有序可以重复     
 *                          ArrayList
 *                          LinkedList
 *                          Vector
 *                  Set:无序不可以重复
 *                          HashSet
 *                          TreeSet
 * Map      :地图    k--value
 * Iteratoor:迭代器

二.Collection集合接口方法
collection接口定义的方法

                int size();  集合中元素的个数
                boolean isEmpty();  判断集合中是否有元素  没有  true
                boolean contains(Object o);  是否包含元素o   包含  true
                Object[] toArray();  把集合转换成数组
                boolean add(E e);  是否添加成功【添加元素】
                boolean remove(Object o); 移出元素o
                boolean containsAll(Collection<?> c);  是否包含c集合
                boolean addAll(Collection<? extends E> c); 添加一个集合
                boolean removeAll(Collection<?> c);  移出集合
                boolean retainAll(Collection<?> c);  保留该集合和c集合的交集
                void clear();   清除所有
                boolean equals(Object o);  相等

三.ArrayList具体实现
1.方法大纲


    ArrayList:
            1.添加
            2.remove  clear(移除和清除)
            3.set(设置)
            4.get     for      iterator
练习
1.list集合中添加10个对象User[name,pwd]
2.获取第3个对象
3.移除指定的对象
4.查找是否有指定的对象
5.遍历

2.ArrayList的测试
***ArrayList底层是Object数组实现
LinkedList:底层是链表实现的
Vector:底层数组实现*

    public static void main(String[] args) {
        //集合对象
        ArrayList list = new ArrayList();
        ArrayList list2 = new ArrayList();
        list2.add("abc");
        list2.add("新插入的");
        //添加元素
        list.add(12);//数值
        list.add('嗯');
        list.add(new Date());
        list.add(1, "新插入的");
        //list.addAll(list);
        list.addAll(1, list);
        //判断是否包含
        /*boolean flag = list.contains(12);
        System.out.println(flag);*/
        //是否包含一个集合
        /*flag = list.containsAll(list2);
        System.out.println(flag);*/
        list.set(0, "修改");
        //保留2个集合的交集
        //list.retainAll(list2);
        //Object o = list.remove(0);
        //清除所有
        //list.clear();

        //获取指定位置的元素
        //System.out.println(list.get(0));

        //获取集合中元素的个数
        //System.out.println(list.size());

        //获取每一个元素
        /*for(int i = 0;i<list.size();i++){
            System.out.println(list.get(i));
        }*/

        //迭代器
        Iterator it = list.iterator();
        while(it.hasNext()){//如果存在下一个元素
            //获取下一个元素
            Object obj = it.next();
            System.out.println(obj);
        }

        Object [] objarr = list.toArray();
        //截取子字符串
        List l =  list.subList(1, 3);
        /*System.out.println("=================");
        for (Iterator iterator = l.iterator(); iterator.hasNext();) {
            Object object = (Object) iterator.next();
            System.out.println(object);
        }*/

    }

}

上面的练习:

User类
package day13;

public class User {
    private String name;
    private String password;
    public User(){}
    public User(String name,String password){
        this.name=name;
        this.password=password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return this.name+" "+this.password;
    }
    /**
     * 此处需要重写equals
     */
    public boolean equals(Object obj)
    {
        if(obj==null)
        return false;
        if(obj instanceof User)
        {
            User user=(User)obj;
            if(this.name.equals(user.name)&&this.password.equals(user.password))
            {
                return true;
            }
        }
        return true;

    }
}
测试类
package day13;
/**
 *              1.list集合中添加10个对象User[name,pwd]
                2.获取第3个对象
                3.移除指定的对象
                4.查找是否有指定的对象
                5.遍历
 */
import java.util.ArrayList;
import java.util.Iterator;

public class List_Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<User> list1=new ArrayList<User>();
        list1.add(new User("张三","1111"));
        list1.add(new User("李四","2222"));
        list1.add(new User("王五","3333"));
        list1.add(new User("麻子","4444"));
        System.out.println(list1.get(3).toString());//查看指定位置的对象,获取第三个对象
        list1.remove(2);//移除指定对象
        System.out.println(list1);

        boolean flag = list1.remove(new User("张一","1"));
        System.out.println(flag);

        System.out.println((list1.contains(new User("王五","3333"))));//查找是否有指定对象
        Iterator<User> aIterator=list1.iterator();//创建list1的迭代器
        while(aIterator.hasNext())//遍历
        {

            System.out.println(aIterator.next());
        }
    }

}
结果:(如果此处不重写equals方法,则不能实现删除指定的数据,原因是contains等底层都是使用的数组)
麻子 4444
[张三 1111, 李四 2222, 麻子 4444]
true
true
李四 2222
麻子 4444

3.LinkerList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值