Java-集合框架

目录

一、ArrayList

二、Collection

三、Iterator

四、LinkedList

五、List

六、Vector

七、Set


多用到API    多用多查多敲

一、ArrayList

public class ListDemo {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("123");
        list.add(123);
        list.add(false);
        System.out.println(list);
        list.addAll(list);
        System.out.println(list);

    }
}

二、Collection

public class CollectionDemo {
/*
* java 集合框架:
* collection:存放的是单一值
* 特点:
* 1、可以存放不同类型的数据,而数组只能存放固定类型的数据
* 2、当使用arraylist子类实现的时候,初始化的长度是10,当长度不够的时候会自动进行扩容操作
* api方法:
* 增加数据的方法
* add:要求必须传入的参数是object对象,因此当写入基本数据类型的时候,包含了自动拆箱和自动装箱的过程
* addall:添加另一个集合的元素到此集合中
* 删除数据的方法
* clear:只是清空集合中的元素,但是刺激和并没有被回收
* remove:删除指定元素
* removeall:删除集合元素
* 查询数据的方法
* contains:判断集合中是否包含指定的元素
* cotains:判断集合中是否包含指定的元素值
* containsall:判断此集合中是否包含另一个集合
* isempty:判断集合是否否等于空
* retainall:若集合中拥有另一个集合的所有元素,返回ture  否则返回false
* size:返回当前集合的大小
*
* //集合转数组的操作
* toarray:将集合转换成数组*/

    public static void main(String[] args) {
        Collection collection=new ArrayList();//本质:数组 底层实现用数组实现  默认值为10
        collection.add("1");//new Inger(1)
        collection.add(123);//new String("abc")
        collection.add(false);//new Boolan(true)自动装箱的过程
//       System.out.println(collection);
        Collection collection1=new ArrayList();
        collection1.add(2);
        collection1.add("ok");
        collection1.add(true);
//        collection1.addAll(collection);
//        System.out.println(collection1);//与上个数组进行合并
//        collection.clear();
//        System.out.println(collection);//只是清空集合中的元素,但是此集合对象并没有被回收
//        collection.remove(collection);
//            System.out.println(collection.contains("1"));
//        System.out.println(collection.containsAll(collection));
//        System.out.println(collection.equals("1"));
//        System.out.println(collection.hashCode());//返回哈希码值
//        System.out.println(collection.isEmpty());//集合中没有元素则返回ture 否返回false
//        collection.parallelStream();
//        System.out.println(collection);
//        collection.remove("1");//删除指定元素
//        System.out.println(collection);
//          collection.removeAll(collection);//删除集合中全部元素
//          System.out.println(collection);
//          collection.size();
//          System.out.println(collection);//返回此集合中的元素
//        System.out.println(collection1);
//        System.out.println(collection.retainAll(collection1));
//        System.out.println(collection);//仅保留此集合中包含在指定元素(可操作)
//        Object[] objects = collection.toArray();//将一个集合返回成数组
//        for (int i = 0; i <objects.length; i++) {
//            System.out.println(objects[i]);
//        }
        for(Object object: collection){
            System.out.println(object);
        }


    }
}

三、Iterator

  @Auther:kongshan
    @Date:2022/5/13-05-13-19:01
    @Description:IntelliJ IDEA
    @version:
在java代码中包含三种循环的方式
 *   do...while
 *   while
 *   for
 * 还有一种增强for循环的方式,可以简化循环的编写
 *
 *
 *   所有的集合类都默认实现了Iterable的接口,实现此接口意味着具备了增强for循环的能力,也就是for-each
 *      增强for循环本质上使用的也是iterator的功能
 *      方法:
 *               iterator()
 *               foreach()
 *   在iterator的方法中,要求返回一个Iterator的接口子类实例对象
 *       此接口中包含了
 *               hasNext()
 *               next()
        在使用iterator进行迭代的过程中如果删除其中的某个元素会报错,并发操作异常,因此
 *       如果遍历的同时需要修改元素,建议使用listIterator(),
 *   ListIterator迭代器提供了向前和向后两种遍历的方式
 *       始终是通过cursor和lastRet的指针来获取元素值及向下的遍历索引
 *       当使用向前遍历的时候必须要保证指针在迭代器的结果,否则无法获取结果值

*/

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class IteratorDemo {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(1);
        list.add("123");
        list.add(true);
        list.add(100L);
        list.add(10.0d);
//        集合遍历
//        for循环
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
//        增强for循环
        for (Object o:list){
            System.out.println(o);
        }
//        迭代器
        Iterator iterator=list.iterator();
        ListIterator listIterator=list.listIterator();
        while (listIterator.hasNext()){
//            if (list.contains("123")){
                list.remove("123");并发操作异常
//            }
//            Object o=listIterator.next();
//            if ("123".equals(o)){
//                listIterator.remove();
//            }
            System.out.println(listIterator.next());
        }
        System.out.println(list);
        System.out.println("*****************");
        while (listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }
    }
}

四、LinkedList

  @Auther:kongshan
    @Date:2022/5/13-05-13-19:15
    @Description:IntelliJ IDEA
    @version:

linkedList拥有更加丰富的方法实现,需要用的时候查询api即可,不需要记忆
*/

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList list=new LinkedList();
        list.add(1);
        list.add("abc");
        list.add(true);
        list.add("abc");
        list.add(100L);
        System.out.println(list);
        System.out.println(list.getFirst());
        System.out.println(list.getLast());
        list.addFirst("ok");
        System.out.println(list);
        System.out.println(list.peek());
        System.out.println(list);
        System.out.println(list.poll());
        System.out.println(list);
        System.out.println(list.pop());
        System.out.println(list);
        list.push("no");
        System.out.println(list);

    }
}

五、List

   @Auther:kongshan
    @Date:2022/5/13-05-13-19:19
    @Description:IntelliJ IDEA
    @version:
 java集合框架:
 *   List:存放的是单一值
 *       特点:
 *           1、可以存放不同类型的数据,而数组只能存放固定类型的数据
 *           2、当使用Arraylist子类实现的时候,初始化的长度是10,当长度不够的时候会自动进行扩容操作
 *       api方法:
 *           增加数据的方法
 *           add:要求必须传入的参数是Object对象,因此当写入基本数据类型的时候,包含了自动拆箱和自动装箱的过程
 *           addAll:添加另一个集合的元素到此集合中
 *
 *           删除数据的方法
 *           clear:只是清空集合中的元素,但是此集合对象并没有被回收
 *           remove:删除指定元素
 *           removeAll:删除集合元素
 *
 *           查询数据的方法
 *           contains:判断集合中是否包含指定的元素值
 *           containsAll:判断此集合中是否包含另一个集合
 *           isEmpty:判断集合是否等于空
 *           retainAll:若集合中拥有另一个集合的所有元素,返回true,否则返回false
 *           size:返回当前集合的大小
 *
 *           //集合转数组的操作
 *           toArray:将集合转换成数组

*/

import java.util.ArrayList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(123);
        list.add("abc");
        list.add(18.0);
        list.add(true);
        list.add(18.0);
        System.out.println(list);
        list.add(0,"ok");
        System.out.println(list);
        Object o=list.get(0);
        System.out.println(o);
        System.out.println(list.indexOf(18.0));
        System.out.println(list.lastIndexOf(18.0));
        System.out.println(list.size());
        list.remove(1);
        System.out.println(list);
        list.set(4,false);
        System.out.println(list);
        System.out.println(list.subList(1,4));
    }
}

六、Vector

  @Auther:kongshan
    @Date:2022/5/13-05-13-19:23
    @Description:IntelliJ IDEA
    @version:

 1、Vector也是List接口的一个子类实现
 *      2、Vector跟ArrayList一样,底层都是使用数组进行实现的
 *      3、面试经常问区别:
 *              1) ArrayList是非线程安全的,高效率,Vector是线程安全的,低效率
 *              2)ArrayList扩容的时候每次扩容1.5倍,Vector扩容的时候每次扩容2倍

*/

import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        Vector vector=new Vector();
        vector.add(123);
        vector.add("123");
        vector.add(true);
        vector.add(100L);
        System.out.println(vector);
        System.out.println(vector.firstElement());
    }
}

七、Set

  @Auther:kongshan
    @Date:2022/5/13-05-13-19:26
    @Description:IntelliJ IDEA
    @version:
 1、set中存放的是无序,唯一的数据
 *   2、set不可以通过下标获取对应位置的元素的值,因为无序的特点
 *   3、使用Treeset底层的实现是Treemap,利用红黑树来进行实现
 *   4、设置元素的时候,如果是自定义对象,会查找对象中的equals和hashcode的方法,如果没有,比较的是地址
 *   5、树中的元素是要默认进行排序操作的,如果是基本数据类型,自动比较,如果是引用类型的话,需要自定义比较器
 *       比较器分类:
 *         内部比较器
 *               定义在元素的类中,通过实现Comparable接口来进行实现
 *         外部比较器
 *               定义在当前类中,通过实现Comparator接口来实现,但是要将该比较器传递到集合中
 *         注意:外部比较器可以定义成一个工具类,此时所有需要比较的规则如果一致的话,可以复用,而
 *               内部比较器只有在存储当前对象的时候才可以使用
 *               如果两者同时存在,使用外部比较器
 *               当使用比较器的时候,不会调用equals方法

*/

import day05.class1常用类.Person类.Person;

import java.util.Comparator;

public class Set implements Comparator {
    public static void main(String[] args) {
//        Set set = new HashSet();
//        set.add(1);
//        set.add("abc");
//        set.add(true);
//        set.add(100L);
//        set.add("abc");
//        System.out.println(set);

        //遍历集合
//        for (int i = 0; i < set.size(); i++) {
//            System.out.println(set.get);
//        }

        //迭代器遍历
//        Iterator iterator = set.iterator();
//        while(iterator.hasNext()){
//            Object obj = iterator.next();
//            System.out.println(obj);
//        }

        //增强for循环
//        for(Object o : set){
//            System.out.println(o);
//        }

//        System.out.println("*******************************");
//        for(Iterator iterator1 = set.iterator();iterator1.hasNext();){
//            System.out.println(iterator1.next());
//        }

//        Set set = new TreeSet();
//        set.add(1);
//        set.add(123);
//        set.add(5);
//        set.add(20);
//        set.add("abc");
//        set.add("casd");
//        set.add("dasd");
//        set.add("bfh");
//        System.out.println(set);

//        Set set1 = new TreeSet(new Set());
//        set.add(new Person("zhangfei",19));
//        set.add(new Person("guanyu",20));
//        set.add(new Person("zhaoyun",18));
//        set.add(new Person("mashaladi",30));
//        System.out.println(set);

    }

    @Override
    public int compare(Object o,Object o2) {
        Person p1=(Person)o;
        Person p2=(Person)o2;
        if (p1.getAge()>p2.getAge()){
            return -1;
        }else if (p1.getAge()<p2.getAge()){
            return 1;
        }else {
            return 0;
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值