java集合总结


集合总结笔记(5.0)

1.定义:数组其实就是一个集合,集合实际就是一个容器,可以容纳其它数据类型。

在这里插入图片描述

2.集合的数据结构:在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5n0DQf0-1609734927831)(D:&& Typora 代码编译工具@@@@Typora图片2\集合数据结构.png)]

3集合在java.util*/;包下。

3集合分类:Collection:单列,Map:双列,存储的是键值对。

1.Collection:

1.1 、 List接口 :可重复、有序、有下标。

实现类 #1.ArrayList:结构数组 (线性表) 查询快 增删慢 (线程不安全)

​ #2…Vector:数据结构为链表;查询慢 ,增删快,线程安全。

​ #3… LinkList:j结构是双向链表 查询慢 增删快 (线程不安全)

2.泛型集合

概念:参数化类型,类型安全的集合,强制集合元素的类型必须一致

1.实例泛型:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FRr6jKht-1609734927832)(D:&& Typora 代码编译工具@@@@Typora图片3\泛型01.png)]

2.collection集合接口 与colletions集合工具类

//自定义类型 E=Element/E=Exception  T=Type  k= Key v =value

List<?> list:代表参数任意的泛型。

类似:数组工具类:Array数组与Arrays 工具类

3.Collections集合的sort()方法的使用

//对于基本数据类型和String默认实现comparable接口
List<Integer> list =new ArrayList<>();

list.add(123);
list.add(456);
list.add(789);
Collections.sort(list);//排序:对于基本数据类型和String默认实现comparable接口
for (int a: list) {
    System.out.print("数组反转后为:"+a+"\t");
}

Collections.sort(list);//排序:对于基本数据类型和String默认实现comparable接口

自定义数据类型需要实现Comparable接口
 //2.自定义泛型
        List<Student> stus=new ArrayList<Student>();
        stus.add(new Student());
        stus.add(new Student());

        Collections.sort(stus);
    }
}
class Student implements Comparable<Student>{

    @Override
    public int compareTo(Student o) {
        return 0;
    }

方法:static静态方法:

reverse(List<?>list) //反转集合中元素顺序

shuffle(List<?> list ) //随机重置集合中元素顺序

sort() //升序排序(元素必须实现Comparable接口)

3.Set接口:特点:无序、无下标、元素不可重复。

方法全部继承于Collection方法。

实现类:1、 HashSet:结构是哈希表 无序 唯一性(通过存放的hashcode和equals保证唯一性)---------》触发equals()方法条件:两个对象的hashcode相同时;-------》2.当存入元素哈希码相同时,会调用equals进行确认,如返回true时,则拒绝后者存入。

​ 2.Set接口下的SortedSet接口:TreeSet:结构是红黑树,可排序 基于顺序实现元素不可重复。#实现SortedSet接口,对集合元素自动排序。

元素对象的类型必须实现Comparable接口,指定顺序规则。

例子:public int compareTo(Teacher o) {
    if (this.salary>o.salary){
        return 1;
    }else if(this.salary<o.salary){
        return -1;
    }
    return 0;
}

  1. ​ LinkedHashSet:结构是链表和哈希表,有序唯一的,

    img
    在这里插入图片描述

#3.Map接口的特点:

特点:1.用于存储任意键值对(Key-----value);

​ 2.键:无序、无下标、不允许重复。

​ 3.值:无序、无下标、允许重复。

#1.HashMap:结构是哈希表,键是唯一无序的。线程不安全,运行效率快,允许用null,作为Key或是value.

#2.SortedMap接口下TreeMap实现类:排序的

#3.LinkHashMap:结构是链表和哈希表有序的唯一的。

5.获取长度的去别

数组:lenght()

集合获取长度 size();

5.集合总结
集合概念:对象的容器,存储对象,定义了对象常用的方法。
List集合:有序、可重复、有下标《实现类:ArrayList、Vector、LinkedList》
Set集合:无序、不可重复、无下标《实现类:HashSet、LinkedHashSet、TreeSet》
Map集合:存储一对数据、无序无下标、键不能重复、值能重复《实现类:HashMap、HashTable》
Collections集合工具类,定义了除了存取以外的集合常用方法。
2.数组遍历的几种方式:

(for循环比例和foreach遍历的区别)

  • foreach语句是for语句特殊情况下的增强版本,简化了编程提高了代码的可读性和安全性不用怕数组越界。
  • 相对老的for语句来说是个很好的补充,提倡能用foreach的地方就不要再用for了。
  • 在用到对集合或者数组索引的情况下foreach显得力不从心这个时候是用for语句的时候了, foreach一般结合泛型使用.

@1.遍历一维数组

//1.数组遍历方式一:
for (int i = 0; i < arr.length; i++) {
System.out.print(“该数组为:”+arr[i]+"\t");
}

//2.数组遍历方式二:

oreach的语句格式:

 for(元素类型type  元素变量value  :遍历对象obj){
                                                  引用x的java语句
                                       }

​ for(int a: arr) {
​ System.out.println(“方式二遍历结果为:”+a);
​ }

@2.遍历二维数组:
/*情况二:二维数组遍历*/
int[][]arr1 =new int[][] {{456,463,78,46},{796,154,735,491}};
//遍历方式一:
System.out.println("该数组为:");
for (int i = 0; i < arr1.length; i++) {
	for (int j = 0; j < arr1[i].length; j++) {
		System.out.print(arr1[i][j]+"\t");
	}
}

System.out.println("************************************************");
//遍历方式二:
System.out.println("逐个输出");
for(int a[]:arr1) {
	for(int b:a)
		System.out.printf("%-2d  ",b);
	System.out.println();
}

欢迎大家点赞留言!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaiBian_Ren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值