Collection集合

Collection集合体系的特点:

Set系列集合的特点:添加元素,是无序,不重复,无索引。是基于哈希表储存数据的。

        1、HashSet:添加的元素,是无序、不重复、无索引的

//创建
  Set<String> sets = new HashSet<>(); // 一行经典代码!

        2、LinkedHashSet:添加的元素是有序的,不重复、无索引。底层依然是使用哈希表存储元素的, 但是每个元素都额外带一个链来维护添加顺序!! 不光增删查快,还有序。缺点是多了一个存储顺序的链会占内存空间!!而且不允许重复,无索引。

//创建
Set<String> sets = new LinkedHashSet<>();

         3、TreeSet: 不重复,无索引,按照大小默认升序排序!! ( 可排序集合 )

       TreeSet集合自自排序的方式:

             1.有值特性的元素直接可以升序排序。(浮点型,整型)

              2.字符串类型的元素会按照首字符的编号排序。

              3.对于自定义的引用数据类型,TreeSet默认无法排序,执行的时候直接报错,因 为人家不知道排序规则。

      自定义的引用数据类型的排序实现:

                对于自定义的引用数据类型,TreeSet默认无法排序 .

                        所以我们需要定制排序的大小规则,程序员定义大小规则的方案有2种:

(  注意:如果类和集合都带有比较规则,优先使用集合自带的比较规则。)

                         a.直接为对象的类实现比较器规则接口Comparable,重写比较方法(拓展方式)

                                 // 如果程序员认为比较者大于被比较者 返回正数!

                                 // 如果程序员认为比较者小于被比较者 返回负数!

                                 // 如果程序员认为比较者等于被比较者 返回0!

                         b.直接为集合设置比较器Comparator对象,重写比较方法

  // public TreeSet(Comparator<? super E> comparator)
        // 集合自带比较器对象
        // 如果类和集合都存在大小规则,默认使用集合自带的规则进行大小排序!!
        Set<Employee> employees1 = new TreeSet<>(new Comparator<Employee>() {
            @Override
            public int compare(Employee o1, Employee o2) {
                // o1比较者   o2被比较者
                // 如果程序员认为比较者大于被比较者 返回正数!
                // 如果程序员认为比较者小于被比较者 返回负数!
                // 如果程序员认为比较者等于被比较者 返回0!
                return o1.getAge() - o2.getAge();
            }
        });

 List系列集合:添加的元素是有序、可重复、有索引的

        1、LInkedList:底层是基于链表的,增删比较快,查询慢!! LinkedList是支持双链表,定位前后的元素是非常快的,增删首尾的元素也是最快的 所以LinkedList除了拥有List集合的全部功能还多了很多操作首尾元素的特殊功能:

/*
public void addFirst(E e):将指定元素插入此列表的开头。
         public void addLast(E e):将指定元素添加到此列表的结尾。
         public E getFirst():返回此列表的第一个元素。
         public E getLast():返回此列表的最后一个元素。
         public E removeFirst():移除并返回此列表的第一个元素。
         public E removeLast():移除并返回此列表的最后一个元素。
         public E pop():从此列表所表示的堆栈处弹出一个元素。
         public void push(E e):将元素推入此列表所表示的堆栈。
*/

         2、ArrayList:实现类集合底层基于数组储存数据的,查询快,增删慢。开发中ArrayList集合用得最多

   - public void add(int index, E element):\\将指定的元素,添加到该集合中的指定位置上。
             - public E get(int index)\\返回集合中指定位置的元素。
             - public E remove(int index)\\: 移除列表中指定位置的元素, 返回的是被移除的元素。
             - public E set(int index, E element)\\:用指定元素替换集合中指定位置的元素,返回更新前的元素值。
       

List的遍历方式:

1.for循环

2.迭代器

Iterator<String> it =list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}

3.forreach

/*
格式:
for(数据类型 变量名 :被遍历集合){
    System.out.println(变量名)
}
*/

4.lambda表达式

lists.forEach(s->{
    System.out.println(s);
});

 Collection工具类的使用:

java.utils.Collections:是集合工具类 Collections并不属于集合,是用来操作集合的工具类。 Collections有几个常用的API:

/* public static <T> boolean addAll(Collection<? super T> c, T... elements) 给集合对象批量添加元素!  
         - public static void shuffle(List<?> list) :打乱集合顺序。
         - public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。
         - public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。
*/
// 优先用方法自带的比较器对象Comparator而不会用类的比较规则!!
        Collections.sort(oranges1, new Comparator<Orange>() {
            @Override
            public int compare(Orange o1, Orange o2) {
                if(o1.getWeight() > o2.getWeight()) return -1;
                if(o1.getWeight() < o2.getWeight()) return 1;
                return 0;
            }
        });
        System.out.println(oranges1);
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值