2020.7.28课堂笔记(java集合框架体系结构collection)

Java集合框架体系结构
默认的一个数组 8
Iterator迭代器
collection:无序、可重复的一组数据
List:有序、可重复
List:ArrayList:底层是可变数组(线性表),遍历元素更快,改变值也就更快
LinkedList:底层是双向链表(在有他自己本身之外再加上他下一个),插入、删除更快
Set:无序、不可重复

collection、List、Set都是接口,全部都位于java.util包里

Map:实现一一对应(Entry)
HashMap
在实现对抽象类和接口实例化的时候,没有类名,但实现了和类一样的功能
私有静态类 node

News:

package cn.kgc.kb09;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/28 14:16
 * @Description:id、名称、创建者
 **/
public class News implements Comparable<News>{
    private int newsId;
    private String title;
    private String creator;

    @Override
    //给后面collection的sort使用的
    public int compareTo(News o) {
        if(o instanceof News){
            News obj=(News)o;
            //自定义比较规则
            //return  obj.newsId-this.newsId;//降序,当前的在后就叫降序
            return  this.newsId-obj.newsId;//升序,当前的在前就叫升序
        }
        return 0;
    }

    public int getNewsId() {
        return newsId;
    }

    public void setNewsId(int newsId) {
        this.newsId = newsId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getCreator() {
        return creator;
    }

    public void setCreator(String creator) {
        this.creator = creator;
    }

    public News(int newsId, String title, String creator) {
        this.newsId = newsId;
        this.title = title;
        this.creator = creator;
    }
    @Override
    public String toString() {
        return "News{" +
                "newsId=" + newsId +
                ", title='" + title + '\'' +
                ", creator='" + creator + '\'' +
                '}';
    }
}

TestNews:

package cn.kgc.kb09;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/28 14:18
 * @Description:假定用数组来存储,元素个数不确定,需要用集合
 **/
public class TestNews {
    //News[] allNews=new News[10];
    //一旦超过了,就需要数组扩容
    //一旦过少,就需要截去多余的部分
    public static void main(String[] args) {
        ArrayList<News> newsList = new ArrayList<>();
        News news1=new News(1,"李小璐与PGOne不得不说的故事","sam");
        News news2=new News(2,"川建国同志的卧底生涯","sam");
        News news3=new News(3,"克林顿在白宫中对莱文斯基唱诗","sam");
        News news4=new News(4,"kb09就业平均薪资达到2W","sam");
/*        newsList.add(news);//在集合中增加元素
        System.out.println(newsList.size());
        newsList.remove(news);//在集合中删除元素
        System.out.println(newsList.size());
        newsList.add(news);
        System.out.println(newsList.size());
        System.out.println(newsList.get(0));//根据下标查找元素
        //newsList.set(0,1);//根据下标修改元素*/
        newsList.add(news1);
        newsList.add(news2);
        newsList.add(news3);
        newsList.add(news4);
        System.out.println(newsList.size());
        //遍历的3种方式
        //fori
        /*for (int i = 0; i < newsList.size(); i++) {
            System.out.println(newsList.get(i));
        }*/
        //增强for遍历
        /*int i=1;
        for(Object obj:newsList){
            System.out.println("第"+i+++"条"+obj);
        }*/
        //原来有多少个往后面加一个可以,但不能跳着来,正常是在前面插入的时候使用
        //newsList.add(1,news3);现有的元素向后移动一位
        //指定插入到已插入元素的位置,则后面的所有元素后移
        newsList.add(4,news3);

        if(newsList.contains("abc")){
            newsList.remove("abc");//不存在的情况,并没有报错,所以一般与contains配合使用
        }
        newsList.remove(1);//往往与indexof一起使用
        //根据对象来找索引,也不是很常用
        int i = newsList.indexOf(news3);
        //removeAll是和一个别的集合比较,如果包含就全部抹掉相同的元素
        //subList取子集合,左闭右开,如果2~3  就只拿2 返回一个子集合
        //toArray把底层的数组扔回来  toArray(Object[])指定扔到那个数组里
        //toString比较有用!
        //clear清空

        //迭代器遍历
        /*Iterator itr=newsList.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next()+"!!!");
        }*/
        System.out.println(newsList.toString());
        newsList.sort(new Comparator<News>() {
            @Override
            public int compare(News o1, News o2) {
                if(o1 instanceof News && o2 instanceof News){
                    News n1=(News) o1;
                    News n2=(News) o2;
                    return n1.getNewsId()-n2.getNewsId();//如果n1比n2大,就会倒序排列
                }
                return 0;
            }
        });
        System.out.println(newsList);
    }
}

TestLink:

package cn.kgc.kb09;

import java.util.*;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/28 15:53
 * @Description:
 **/
public class TestLink {
    public static void main(String[] args) {
        LinkedList list=new LinkedList();
        News news1=new News(1,"李小璐与PGOne不得不说的故事","sam");
        News news2=new News(2,"川建国同志的卧底生涯","sam");
        News news3=new News(3,"克林顿在白宫中对莱文斯基唱诗","sam");
        News news4=new News(4,"kb09就业平均薪资达到2W","sam");
        list.add(news1);
        list.addLast(news2);
        list.addFirst(news3);
        list.add(news4);
        list.remove();//等同于removeFirst();
        list.element();//获取它的第一个元素getFirst();
        list.offer(1);//等同于add(1);
        list.peek();//等同于getFirst(); 如果当前为空就返回空
        list.poll();//弹出首元素,相当于removeFirst();
        list.pop();//等同于removeFirst
        list.push("abc");//等同于addFirst();
        for (Object o : list) {
            System.out.println(o);
        }

        //实现了从LinkedList转成ArrayList
        ArrayList arr=new ArrayList();
        arr.addAll(list);

    }
}

TestSet:

package cn.kgc.kb09;

import java.util.HashSet;
import java.util.Iterator;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/28 16:26
 * @Description:
 **/
public class TestSet {
    public static void main(String[] args) {
        HashSet set=new HashSet();
        set.add(1);
        set.add("abc");
        set.add("hello");
        set.add(1);
        set.add("abc");
        set.add(2);
        System.out.println(set.size());
        if(set.contains("abc")){
            set.remove("abc");
        }
        //set一般来说只用来做查看,去重,addAll把另外一个list拿进来,把重复数据扔掉了
        //不满足输入顺序的就叫做无序,默认是按照hashcode排序的
        /*for (Object o : set) {
            System.out.println(o);
        }*/
        Iterator itr = set.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next());
        }
    }
}

TestTree:

package cn.kgc.kb09;

import java.util.TreeSet;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/28 17:07
 * @Description:
 **/
public class TestTree {
    public static void main(String[] args) {
        TreeSet set=new TreeSet();
        set.add(4);
        set.add(3);
        set.add(2);
        set.add(1);
        System.out.println(set);
        for (int i = 0; i < set.size(); i++) {

        }
    }
}

你可能感兴趣的:(笔记)