java学习之list集合、Set集合及常用函数

public class List{
    public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");
//        list集合可以存储重复元素
        System.out.println(list);
        System.out.println("-----------------------------------");
//        list集合在指定位置添加元素
        list.add(2,"nana");
        System.out.println(list);
        System.out.println("-----------------------------------");
/*//        remove方法
        String s1 = list.remove(3);
        System.out.println(s1);
        System.out.println(list);
        System.out.println("-----------------------------------");*/
//         set方法
        list.set(2,"yoyo");
//        get方法
        String s = list.get(2);
        System.out.println(s);
        System.out.println(list);
        System.out.println("-----------------------------------");
//        遍历list集合,三种方式
//        普通for循环
        for(int i=0;i<list.size();i++){
            String s2 = list.get(i);
            System.out.println(s2);
        }
        System.out.println("-----------------------------------");
//        增强for循环
        for (String a : list) {
            System.out.println(a);
        }
        System.out.println("-----------------------------------");
//        迭代器
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String next = it.next();
            System.out.println(next);

        }

    }
}

1、List集合的特点:继承了Collection接口;有序的集合,存储和取出的顺序是一样的;有索引;与set不同,允许存储重复的元素。

操作索引时候,一定要注意防止索引越界异常。

2、set:不允许存储重复的元素,没有索引,没有带索引的方法,也不能使用普通的for循环遍历,可以用迭代器遍历和增强for循环;

3、Hashset:底层是一个哈希表结构(查询的速度非常的快),无序集合(存储元素和取出元素的顺序有可能不一致),不是同步的(多线程)

存储数据的结构:哈希表

哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来的地址,不是实际存储的物理地址)

在Object类中有一个方法,可以获取对象的哈希值。hashcode()返回对象的哈希码值,就是一个整数

数组结构:把元素进行了分组(相同哈希值的元素是一组),链表/红黑树结构把相同哈希值的元素连在一起。

两个元素不同,但是相同哈希值,叫做哈希冲突。

jdk1.8之前,哈希表是数组+链表。jdk1.8之后,哈希表=数组+红黑树/链表(提高查询的速度),如果链表长度超过了8位,就转换成红黑树。

4、set集合不允许存储重复元素的原理:set集合在调用add方法时,会调用元素的hashcode方法,计算哈希值。和equals方法,判断元素是否重复。

Hashset存储自定义类型元素,如果想做到元素唯一,必须要重写hashcode方法和equals方法。

5、sort方法使用的前提:被排序的集合里边存储的元素,必须实现comparable,重写接口中的方法compareto定义排序的规则。并且接口的排序规则,如果是自己(this)减去参数就是升序,反之亦然

还有一个compartor,二者的区别就是:comparable是自己(this)和别人(参数)比较,自己需要实现comparable接口,重写比较的规则compareto方法。comparator是相当于找一个第三方的裁判,比较两个。return o1-o2;就是升序(前减后)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值