JavaSE学习(集合框架)

前言

这里介绍了集合框架,然后选取了不同存储方式接口的实现类专门进行其方法及其遍历的展示,还有工具类Collections。


一、集合与数组特点对比

集合数组
长度可变长度固定
只能存放引用数据类型既可以存放基本数据类型又可以存放引用数据类型
打印出来是集合(重写了Object类的toString方法)不重写Object类的toString方法时打印出来是地址

如果希望在集合中存入基本数据类型只需要用其对应的包装类int-integer、char-character、其余将首字母变为大写即可


二、集合框架体系

在这里插入图片描述


三、ArrayList成员方法及其遍历

在使用这些成员方法之前,我们要先创建一个ArrayList对象,<>泛型:用于限制集合中存放的数据类型:

ArrayList<Integer> integers = new ArrayList<>();

在这里插入图片描述
可以划归为增删改查 四类操作,调用方法很简单,我们来看一下ArrayList的遍历:
1、普通for:

for (int i = 0; i < strings.size(); i++) {
   System.out.println("strings.get(+"+i+") = " + strings.get(i));
}

2、增强(高阶)for:

//把strings集合中每一个值赋给o然后输出,并且o的类型是String
for(String o : strings){
   System.out.println("o = " + o);
}

3、利用迭代器:

//首先利用iterator方法创建迭代器,然后用迭代器的hasNext方法查看下一个元素是否存在,存在则用next获取,输出
Iterator<String> iterator = strings.iterator();
while(iterator.hasNext()){
   System.out.println(iterator.next());
}

对于没有索引的集合,例如Set和Map接口及其实现类一般没有索引,我们可选择高阶for或者定义迭代器


四、HashMap的遍历

与ArrayList不同的是,创建一个HashMap对象需要分别规定键和值的类型,可以通过键查该集合中的元素

HashMap<String, Student> stu = new HashMap<>();

同样的,看一下他是如何遍历的:
1、entrySet: 它是一个set集合,用于获取键值对的集合

Set<Map.Entry<String, Student>> entries = stu.entrySet();
Iterator<Map.Entry<String, Student>> iterator = entries.iterator();
while(iterator.hasNext()){
   Map.Entry<String, Student> next = iterator.next();
   System.out.println("next.getKey() = " + next.getKey());
   System.out.println("next.getValue() = " + next.getValue());
}

2、keySet: 它是所有键的集合,虽然遍历得到的都是键,但是可以通过键拿到值

Set<String> strings = stringStringHashMap.keySet();
Iterator<String> iterator = strings.iterator();
while(iterator.hasNext()){
   String next = iterator.next();
   System.out.println("next = " + next);
   System.out.println("stringStringHashMap.get(next) = " + stringStringHashMap.get(next));
}

五、Collections工具类的方法

1、sort: 对集合排序,默认升序

Collections.sort(integers);

如果需要降序,则需要自定义排序规则:

Collections.sort(integers, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });

return o1-o2是升序

如果有特定需求,比如对集合对象的某一属性(年龄)进行排序,也可以自己定义一个比较器:

public class PersonCom implements Comparator<Person> {
    @Override
    public int compare(Person o1, Person o2) {
        return o2.getAge()-o1.getAge();
    }
}

然后使用:

Collections.sort(people,new PersonCom());

2、shuffle: 用于打乱集合

 Collections.shuffle(integers);

3、reverse:逆置集合

Collections.reverse(integers);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值