集合(容器)(1)

1.集合API

Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。

 集合体系:

     单列集合                                                  双列集合        键--值 

            Collection(接口)                                     Map(接口)

                    List(接口)    可存储重复元素                HashMap

                          ArrayList                                             Hashtable

                          LinkedList                                           TreeMap

                          Vector

                    Set(接口)   不可存储重复元素

                           HashSet

                           TreeSet

2.Collection接口

在Collection 中定义了一些集合中的共有方法:

add();

addAll();       //把一个集合添加到另一个集合

equals();         //比较两个集合里面的内容是否相等

isEmpty();      //判断集合中元素的个数是否为空

remove();       //删除指定元素

retainAll();

toArray();     //将集合转化为数组

size();      //求集合的长度

clear();    //清空一个集合里面的元素

案例:

package com.ffyc.javaCollection;

import java.util.ArrayList;
import java.util.Collection;

public class collectionDemo {
    /*
       Collection接口,作为单列集合中顶级接口,里面定义了单列集合共有的方法
       方法以增,删,改,查,判断,转换为主。
       Collection<E>,ArrayListE>后面<E>是jdk5之后的语法 --泛型
       集合是容器,可以储存不同的数据,严格上讲集合是可以储存任何类型的(只能存储引用类型)
       可以通过泛型语法,危机和设置一个类型,这样 只能存储设置的数据类型
       集合中建议存储同一类型数据
     */
    public static void main(String[] args) {

        Collection<String> c = new ArrayList<>();
                   c.add("a");
                   c.add("b");
                   c.add("c");

        Collection<Integer> c1 = new ArrayList<>();
                   c1.add(1);
                   c1.add(2);
                   c1.add(3);

        Collection<String> c2 = new ArrayList<>();
                   c2.add("a");
                   c2.add("a1");
                   c2.add("b1");
                   c2.add("c1");
                   c2.addAll(c);//把一个集合添加到另一个集合
                   c2.equals(c);//比较两个集合里面的内容是否相等
                  // c.clear();//清空一个集合里面的元素
                   c2.remove("a1");//删除指定元素,成功返回true,不成功返回false
        System.out.println(c2.remove("a1"));
        System.out.println(c.isEmpty());//判断集合中元素的个数是否为空
        System.out.println(c2.equals(c));
        System.out.println(c);
        System.out.println(c2);
        System.out.println(c.size());//数组长度length,字符串长度length(),集合长度size()
        System.out.println(c2.retainAll(c));//在c2中保留c中交集的元素,发生变化返回true,没有变化返回false

        Object[] obj = c.toArray();//将集合转为Object类型数组
        String[] sobj = c.toArray(new String[c.size()]);//将集合转为指定类型数组

    }
}

3.List(接口)  共有的特点:有序(按照添加顺序),可以有重复元素

    ArrayList

            底层是通过数组实现的,是可以变长的

             查询快,中间增删慢

package com.ffyc.javaCollection;

import java.util.ArrayList;

public class ArrayListDemo1 {
    public static void main(String[] args) {
        /*
         ArrayList底层是数组实现
         add();像集合中添加元素时,底层会默认创建一个长度为10的Object类型数组
         当数组装满时,再次添加元素,会创建一个原来数组长度1.5倍的新数组,将原数组的内容复制过里啊、、、过来
         最后将新地址赋给底层数组

         if (minCapacity - elementData.length > 0)
            grow(minCapacity);//底层扩容的方法
         */
        ArrayList<String> list = new ArrayList<>();
                          list.add("a");
                          list.add("b");
                          list.add("c");
                          list.add("d");
                          list.add("d");
                          list.add(0,"x");//向指定下标位置插入元素
                          list.contains("x");//集合中是否包含某一元素
                          list.get(3);//取下标为3的元素
                          list.set(0,"y");//替换指定位置上的元素
        System.out.println(list.size());//返回集合中实际存储的元素个数
        System.out.println(list.remove(2));//删除索引为2上的元素
        System.out.println(list.contains("x"));
        System.out.println(list);
        System.out.println(list.get(3));
    }
}

LinkedList

            底层是链表实现

            查询慢(必须从头/尾开始查找,直到找到),中间增删快,只需改变后继结点的位置 

package com.ffyc.javaCollection;

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {

        LinkedList<String> llist = new LinkedList<>();
                           llist.add("a");
                           llist.add("b");
                           llist.add("c");
                           llist.add("d");
                           llist.add("e");
                           llist.get(3);//要找的元素位置小于size/2,那就从头结点开始,否则从尾结点开始查找
                           llist.addFirst("x");//从第一个位置添加元素
                           llist.addLast("y");//从最后一个位置添加元素
                           llist.removeFirst();//删除第一个元素
                           llist.removeLast();//删除末尾元素
        System.out.println(llist.get(3));
        System.out.println(llist);

    }
}

     Vector

             底层是数组实现,线程安全的

package com.ffyc.javaCollection;

import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        Vector<String> v = new Vector<>();
                       v.add("a");
                       v.add("b");
                       v.add("c");
                       v.add("d");
                       v.add("a");
                       v.add("a");


        System.out.println(v);//[a, b, c, d, a, a]
    }
}

4.集合的遍历

     for循环

     增强for循环

package com.ffyc.javaCollection;

import java.util.ArrayList;

public class ArrayListDemo1 {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
                          list.add("a");
                          list.add("b");
                          list.add("c");
                          list.add("d");
                          list.add("d");
                          list.add("a");
                          list.add("b");
                          list.add("c");
                          list.add("d");
                          list.add("d");
        /*
          for循环,集合中元素的遍历
        */
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("------------------------------");
        /*
        增强for循环,合中元素的遍历
         */
        for(String s : list){
            System.out.println(s);
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值