集合(java)

 

 

 1.容器

1.数组:创建一个指定长度的数组,使用数组来存储多个数据,数组的查询速度快

2.集合:程序运行时,数据数量是改变的,但是数据一旦给定,就不能改变,频繁的扩容,对数据操作多种多样的增删多,查询少,链表结构针对于程序中,这种不同的存储需求

public class Demo1 {
//    集合(容器):
//    数组(容器):创建一个指定长度的数组,使用数组来存储多个数据,
//    程序运行时,数据运行时数据数量是改变的,但是数组一旦给定,就不能频繁的扩容,数组优点是查询速度快
//    对数据操作多种多样的,增删多,查询少,链表结构针对程序中,这种不同存储操作需求
//    collection(单列)
//       list(可重复)
//       set(不可重复)
//    Map(多列)
public static void main(String[] args) {
    Collection<String> a=new ArrayList<>();
    a.add("a");
    a.add("b");
    a.add("c");
    a.add("d");
    Collection<String> b=new ArrayList<>();
    b.add("e");
    b.add("f");
    b.add("g");
    b.add("h");
//    a.addAll(b);//集合全部添加到另一个集合中
//    a.clear();//将集合中的所有元素全部清空
//    System.out.println( a.equals(b));//比较俩个集合中的元素是否相等
//    System.out.println(a.isEmpty());//判断是否为空集合
//    a.remove("c");//在集合中指定删除某一个元素
//    System.out.println( a.remove("c"));//成功为ture,失败为false
//    System.out.println( a.retainAll(b));//保留取交集,成功为ture,失败为false
//    System.out.println(a.size());//输出该集合的长度 //数组length是为属性,字符串length()为方法,集合size()为方法
//    String [] sobject=a.toArray(new String [a.size()]);//将集合转化为指定类型
//    System.out.println(Arrays.toString(sobject));
//    Object [] b1=a.toArray();//转化成Object类型
    System.out.println(a);
    System.out.println(b);







}



  public static void main(String[] args) {
        //ArrayList:底层是通过数组实现的,动态数组,查询快,中间增删慢
        //Linkedlist:底层是链表实现,查询慢,中间增删快,只需要改变后继节点的位置
//        Vector:底层是数组实现,较为安全
        //add();向集合中添加元素时,底层会默认创建一个长度为10的Object类型数组,
        // 当数组装满时,再次添加数组时,会创建一个原来数组长度1.5倍的新数组,将原来数组内容复制过来,最后将新数组的地址赋给底层
        ArrayList<String> s=new ArrayList<>();
        s.add("a");
        s.add("b");
        s.add("c");
        s.add("d");
        System.out.println(s.get(2));//根据索引得到指定位置的元素
        s.remove(0);//删除并返回指定位置的元素
        System.out.println(s);
        s.set(0,"X");//替换指定元素并返回数组
        System.out.println(s);
        s.size();
        System.out.println(s.size());//返回实际元素个数
    }
 ArrayList alist = new ArrayList();
        alist.add("a");
        alist.add("b");
        alist.add("c");
        alist.add("d");
        Date date = new Date();
        long s1 = date.getTime();
        System.out.println(s1);
        for (int i = 0; i < 500000; i++) {
            alist.add(2, "c");
        }
        Date date1 = new Date();
        long s2 = date1.getTime();
        System.out.println(s2);
        long s3=s2-s1;
        System.out.println(s3);
        LinkedList llist=new LinkedList();
        llist.add("a");
        llist.add("b");
        llist.add("c");
        llist.add("d");
        Date date2 = new Date();
        long s4 = date2.getTime();
        System.out.println(s4);
        for (int i = 0; i < 500000; i++) {
            llist.add(2, "c");
        }
        Date date3 = new Date();
        long s5 = date3.getTime();
        System.out.println(s2);
        long s6=s5-s4;
        System.out.println(s6);
    迭代器遍历集合1:返回了一个ArrayList的内部类对象,实现Iterator接口
//        此类部类,专门用作对集合进行遍历时的控制
//        ArrayList<String> llist=new ArrayList();
//        llist.add("a");
//        llist.add("b");
//        llist.add("c");
//        llist.add("d");
//        llist.add("e");
//        llist.add("f");
//        llist.add("g");
//        llist.add("g");
//        Iterator<String> it=llist.iterator();
//        while(it.hasNext()){//判断集合中是否有元素
//            String e=it.next();//将下一个元素赋给e
//            if(e.equals("g")){
//                it.remove();//删除时用迭代器进行方法调用,底部有自动的计数器
//            }
//        }System.out.println(llist);
        //迭代器集合2,提供ListIterator()方法
        LinkedList<String> llist = new LinkedList();
        llist.add("a");
        llist.add("b");
        llist.add("c");
        llist.add("d");
        llist.add("e");
        llist.add("f");
        llist.add("g");
        llist.add("g");
        ListIterator<String> it = llist.listIterator(llist.size());//此方法可以指定位置进行迭代
//        while(it.hasNext()){
//            String e=it.next();
//            System.out.println(e);
//        }
        while (it.hasPrevious()) {//此方法可以将集合中的元素进行逆序遍历
            String e = it.previous();
            System.out.println(e);
        }
    }
  //set共同点:不可重复,无序(不是按照添加的顺序进行排序,杂乱),无序且不重复的集合
        //有遍历俩种形式:1.增强for循环 2.迭代器迭代(无索引故不能使用for循环)
        // Hashset:存储的元素不固定
//        HashSet<String> hset=new HashSet<>();
//        hset.add("a");
//        hset.add("d");
//        hset.add("b");
//        hset.add("x");
//        hset.add("l");
//          hset.add("l");
//          hset.add("l");
//        System.out.println(hset);

//Treeset:可以按照元素的自然顺序进行排序,有序(根据元素的自然顺序进行排序)且不能存储重复元素
//        TreeSet<String> hset=new TreeSet<>();
//        hset.add("a");
//        hset.add("d");
//        hset.add("b");
//        hset.add("x");
//        hset.add("l");
//        System.out.println(hset);

        //可以把另外一个集合的元素赋给Treeset。前提是该集合必须和Comparable有关系或者是继承
//        Demo3 demo1=new Demo3(1,"baoma");
//        Demo3 demo2=new Demo3(2,"baoma");
//        Demo3 demo3=new Demo3(3,"baoma");
//        TreeSet<Demo3> a=new TreeSet<>();
//        a.add(demo1);
//        a.add(demo3);
//        a.add(demo2);
//        System.out.println(a);



    }

具体框架看思维导图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃橘子的Crow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值