Day17 集合框架

Collection接口:无序,可重复

List接口:

有序,可重复

        Arraylist实现类:

底层用可变数组存储(数组扩容),如果超出阈值,则新建一个数组替代原来的,如果在Arraylist集合中

具体方法代码:

import java.util.ArrayList;
//对新闻标题进行存储和操作(ArrayList)
public class NewMgr {
    public static void main(String[] args) {
        //创建新闻标题对象
        NewsTitle title1=new NewsTitle(1,"北京热门景点故宫","author"){};
        NewsTitle title2=new NewsTitle(2,"北京热门景点长城","author"){};
        NewsTitle title3=new NewsTitle(3,"北京热门景点北海","author"){};
        NewsTitle title4=new NewsTitle(4,"北京热门景点颐和园","author"){};
        NewsTitle title5=new NewsTitle(5,"北京热门景点天安门","author"){};

        //创建集合对象,并将新闻标题加入到集合中
        ArrayList list =new ArrayList();//等同于数组中的list[0]=title1;
        list.add(title1);
        list.add(title2);
        list.add(title3);
        list.add(title4);
        list.add(title5);
        list.add(1,title5);

        //获取新闻标题的总数
        System.out.println("新闻标题一共有"+list.size()+"条");
        System.out.println("*************");
        //逐条打印新闻标题名称
        //方法一:遍历ArrayList元素的位置(下标)
        for (int i = 0; i < list.size(); i++) {
            list.get(i);//等同于list[i],请注意,返回值为Obiect
            NewsTitle title=(NewsTitle)list.get(i);
            System.out.println(title.getTitle()+",作者"+title.getAuthor());//这句很关键
        }

        //方法二:增强型for,遍历输出对应下标元素
        System.out.println("*********");
        for (Object o : list) {
            NewsTitle title=(NewsTitle)o;
            System.out.println(title.getTitle());
        }

        System.out.println("**********");
        System.out.println(list.contains(title5));

        System.out.println("*************");
        System.out.println(list.size());
        //删除列表中是否包含某个元素
        list.remove(title1);
        System.out.println(list.contains(title1));

        System.out.println("**********");
        //获得列表元素个数
        System.out.println(list.size());

        //清空集合
        list.clear();
        System.out.println(list.size());

    }
}

        LinkedList实现类:

底层使用链表存储,

具体方法代码:

import java.util.LinkedList;

//对新闻标题进行存储和操作(LinkedList)
public class NewMgr2 {
    public static void main(String[] args) {
        //创建新闻标题对象
        NewsTitle title1=new NewsTitle(1,"北京热门景点故宫","author"){};
        NewsTitle title2=new NewsTitle(2,"北京热门景点长城","author"){};
        NewsTitle title3=new NewsTitle(3,"北京热门景点北海","author"){};
        NewsTitle title4=new NewsTitle(4,"北京热门景点颐和园","author"){};
        NewsTitle title5=new NewsTitle(5,"北京热门景点天安门","author"){};

        //创建集合对象,并将新闻标题加入到集合中
        LinkedList list =new LinkedList();//等同于数组中的list[0]=title1;
        //一次在末尾添加元素
        list.add(title1);
        list.add(title2);
        list.add(title3);
        list.add(title4);
        list.add(title5);
        //在指定位置加入某个元素
        list.add(1,title5);

        //插入头条新闻标题
        NewsTitle title6=new NewsTitle(6,"北京热门景点","author6");
        //在列表首部添加元素title6
        list.addFirst(title6);
        System.out.println("*************");
        //逐条打印新闻标题名称
        //方法一:遍历ArrayList元素的位置(下标)
        for (int i = 0; i < list.size(); i++) {
            list.get(i);//等同于list[i],请注意,返回值为Obiect
            NewsTitle title=(NewsTitle)list.get(i);
            System.out.println(title.getTitle()+",作者"+title.getAuthor());//这句很关键
        }

        //方法二:增强型for,遍历输出对应下标元素
        System.out.println("*********");
        for (Object o : list) {//等于for(int i=0;i<list.size();i++),因为在ArrayList或者LinkedList或者HashSet集合中,
            // 构造集合的时候并没有规定类型,所以在给集合用add方法加对象的时候进去的不知道是啥类型,
            //所以用增强for用的是Object类型
            NewsTitle title=(NewsTitle)o;//增强for遍历后的对象o还要强转成对应的类
            System.out.println(title.getTitle());
        }
        System.out.println("**********");

        //获取头条和最末条新闻标题
        System.out.println("**********");
        list.getFirst();
        NewsTitle titleFir=(NewsTitle)list.getFirst();
        list.getLast();
        NewsTitle titleLas=(NewsTitle)list.getLast();
        System.out.println("头条新闻标题为:"+titleFir.getTitle()+"末条新闻标题为:"+titleLas.getTitle());//这个地方转换很关键,一定要多看几遍*************




        System.out.println(list.contains(title5));

        System.out.println("*************");

        //删除列表中是否包含某个元素
        list.remove(title1);


        System.out.println(list.contains(title1));

        System.out.println("**********");
        //获得列表元素个数
        System.out.println(list.size());

        //清空集合
        list.clear();
        System.out.println(list.size());
    }
}

Set接口:

无序,不可重复

        HashSet实现类:底层存储是用HashMap的key来进行存储

Map接口:

        HashMap实现类:底层是用一个Entry<K,V>(映射关系)来存储的

猜你喜欢

转载自blog.csdn.net/yuanlaishidahuaa/article/details/121220636