java 集合

 集合中存储的不能是基本类型,

集合中存储的不是对象,而是对象的内存地址,或者说是对象的引用

List list = new ArrayList();

Collections.synchronizedList(list); //这样list就变成线程安全的了。

泛型是在编译期间使用的,运行期间没有用

List<String> list = new ArrayList<>(); //JDK8之后,后面的<>内不需要写类型了。<>钻石表达式

自定义泛型,里面的类型随便写

增强for循环 foreach

放到HashSet中的元素实际上是放到HashMap的key部分了。

HashMap的原理

Node[] table; //一维数组

Node{

Object k;

Object v;

int hash;

Node next; }

向map集合中存放数据或者获取数据,都是先调用K部分的hashcode方法,再调用equals方法。

如果hashcode不同,则直接存入数组,如果hashcode相同,则调用equals,去单向链表中查询;

放到HashMap的K部分的和放到HashSet里面的对象需要重写hashCode和equals方法。

Properties   setProperties   getProperties

TreeSet  放到TreeSet集合中的类型 需要实现  java.lang.Comparable<>  接口

或者新建一个类实现  Comparator接口,泛型里面存放要放入到Treeset集合中的类型

二叉树的结构图

 或者实现 

Comparator 接口  ------》 比较器
class Stucompa implements Comparator<Student>{

    @Override
    public int compare(Student o1, Student o2) {
        return o1.getAge()-o2.getAge();
    }
}

TreeSet<Student> treeset = new Treeset<>(new Stucompa());

TreeSet 放进去之后,再拿出来就是根据比较规则排好序的

TreeMap放进去之后,再拿出来就是根据比较规则排好序的

对list集合中的数据进行排序  Collections.sort(list);  则list存入的数据也需要实现Comparable接口。

Set放入数据后,要想排序,则可以使用List转换 如

Set<String> set = new HashSet<>();

List list = new ArrayList<>(set);//  把set的数据放入到list中去

Collections.synchronizedList   Collections.synchronizedSet  Collections.synchronizedMap,将参数变为 线程安全的。

HashSet,HashMap中的泛型类需要重写  hashCode和equals方法。

TreeSet,TreeMap中的k,的泛型类《K》需要实现 Comparable接口,或者用一个类实现Comparator接口,Comparator接口中的泛型是泛型类<K>

Map.Entry<String,Integer> m = map.entryset();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值