初学Java集合

集合

集合类被称为容器类
数量不确定 具有映射关系的数据 只能存储对象(保存对象引用变量)
位于java.util
java5之前丢掉所有数据类型保存为object 5以后可以保存具体数据类型
不能放基本的数据类型但是支持数据自动装箱

数组可以保存基本数据类型和对象

分类
set 无序 不可重复
list 有序 可重复
map 具有映射关系 key-value key不可重复 value可以重复
queue 一种队列集合的实现 java5之后

set list queue是collection接口子类 map是Map的子类

Iterator主要用来遍历(迭代访问)Collection集合中的元素 其对象也被称为迭代器
Iterator接口隐藏了Collection实现类的底层细节 是Collection接口的父接口

Java8 新增了foreach(Consumer action)方法
参数类型是一个函数式接口Collection可以直接调用

set

1hashset
a元素无需 b不同步 多线程操作需写代码 c集合中值可以为null
通过hashcode()与equels判断是否重复 hashcode()决定元素在hashset中的位置
hashcode()值相同 equels()不同同一个位置放置多个元素 性能降低

hashcode()调用后返回对象的hash值
String Str = new String(“www.csdn.com”);
System.out.println(“字符串的哈希码为 :” + Str.hashCode() );
hash值的int算法为
s[0]*31^(n-1) + s[1]*31 ^(n-2) + … + s[n-1] (n为字符串的长度)

2Linkedhashset
使用链表维持元素顺序的hashset 不允许元素重复
hashset的子类

3Treeset
是Sortedset接口的实现类

自然排序
确保元素处于排序状态 元素按照大小排序并非插入顺序 升序排列
继承Comparator接口的compareTo(object obj)obj1.compareTo(obj2) 等于0 相等 正数大于 负数小于
char string等数据类型对比unicode boolea true对应的包装类实例大于 false对应的包装类实例
只能存入同一类型数据 根据红黑树结构新添加的元素与之前的元素比较大小 否则ClassCaseException

list

可以按索引访问元素 按添加顺序分配索引
ArrayList Vector 基于数组实现的 封装动态Object[]数组 不设置长度 默认长度为10

遍历List集合

public class Test {

    public static void main(String[] args) {
        // 循环遍历List的4中方法
        List<String> list = new ArrayList<>();
        list.add("l");
        list.add("i");
        list.add("s");
        list.add("t");
        // 1. 普通遍历方式
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        // 2.增强的for循环
        for (String str : list) {
            System.out.println(str);
        }
        // 3. 使用Iterator迭代器
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String str = (String) it.next();
            System.out.println(str);
        }
        // 4. java8 Lambda方式
        // list.forEach(System.out::println);//和下面的写法等价
        strList.forEach(str -> {
            System.out.println(str);
        });
    }
}
map

hashmap 线程安全 允许使用null作为key value
hashtable 线程安全 不允许使用null作为key value

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值