IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java集合你还没搞明白吗?看了这篇还不懂就不要学编程了! -> 正文阅读

[Java知识库]Java集合你还没搞明白吗?看了这篇还不懂就不要学编程了!

Java集合

什么是集合?

集合类是一个大小可变的容器。

集合类的特点:类型可以不确定,大小可以不确定

使用场景:存储的数据要经常发生改变

常用集合

image

集合主要分为Collection和Map两大类:

Collection:是单列集合的顶层父类,是一个独立元素的序列,这些个元素都服从一条或者多条规则。
List必须按照插入的顺序保存元素,而Set不能有重复的元素。即Collection分为List和Set两大分支。

【重点】

Collection:无序,可重复
List系列集合:有序,可重复,有索引。
– ArrayList:添加的元素是有序,可重复,有索引
– LinekdList:添加的元素是有序,可重复,有索引
Set系列集合:添加的元素是无序,不可重复,无索引
– HashSet:添加的元素是无序,不可重复,无索引
– LinkedHashSet:添加的元素是有序,不可重复,无索引
– TreeSet:按照大小默认升降序,不可重复,无索引
Map:存储方式key:value键值对

Conllection集合

什么是Conllection集合?

Conllection集合是所有集合的祖宗类,它的功能是全部集合都可以继承使用的

Conllection集合常用方法

方法名说明
public boolean add(E e)在集合末尾新增一个元素
public void clear清空集合中的所有元素
public boolean remove(E e)删除指定的元素,返回是否删除成功
public boolean isEmpty()判断当前集合是否为空
public boolean contains(Object obj)判断当前集合中是否包含指定的对象
public Object[] toArray()把集合中的元素,存储到数组中
public int size()返回集合中的元素个数

List集合

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。底层数据结构是数组,线程不安全。(它是我们用得非常非常多的一个集合)

实现方式:

ArrayList list = new ArrayList();//创建一个ArrayList集合,底层Object[] elementData初始化为{}                                                    
list.add(new Person("张三",1));//第一次调用add()时,在底层创建了长度10的数组,并将数据张三添加到elementDate中

定义存储类型

ArrayList<Person> list = new ArrayList<>();         //对象类型                                       
list.add("张三",1);									//加群1025684353一起吹水聊天

ArrayList<String> list = new ArrayList<>();         //String类型                              
list.add("张三");

ArrayList<Integer> list = new ArrayList<>();         //包装类型  Boolean Byte Character Short Integer Long Float Double                                  
list.add(1);

List集合常用方法:

方法名说明
public boolean add(E e)在集合末尾新增一个元素
public boolean add(int index, E element)在指定位置添加元素
public boolean remove(Object o)删除指定的元素,返回是否删除成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素个数
indexOf(Object o)查询指定元素的位置 lastIndexOf也一样,只是从尾部开始遍历

List集合常用方法的使用:

ArrayList<String> list = new ArrayList<>();
list.add("张三");          //添加一个元素
list.add(5,"张三");        //在指定索引处添加一个元素

list.remove("张三");       //删除一个元素
System.out.println(list.remove("张三"));  //删除一个元素并输出true|false
list.remove(1);            //删除指定索引处的元素

list.set(0,"李四");        //修改指定索引的元素,返回被修改的元素
							//加群1025684353一起吹水聊天
list.get(0);              //获取指定索引的元素

list.size();              //获取集合中元素个数

list.lidexOf("李四");     //获取指定元素的位置

List遍历方式:

// 第一种遍历方式:普通for循环
for (int i = 0; i < arrayList.size(); i++) {
  System.out.println(arrayList.get(i));
}

// 第二种遍历方式:增强for循环
for (String string : arrayList) {
  System.out.println(string);
}
//加群1025684353一起吹水聊天
// 第三种遍历方式:迭代器
Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()) {
  System.out.println(iterator.next());
}

Map集合

Map集合结构体系

image

什么是Map集合?

Map集合是一种双列集合,每个元素包含两个值。
Map集合的每个元素的格式:key=value(键值对元素)。

Map集合的特点

1.Map集合都是由键决定的。
2.Map集合的键都是无序、不重复、无索引。
–Map集合后面重复的键对应的元素会覆盖前面的整个元素!
3.Map集合的值是无要求的。
4.Map集合的键值对都可以为null。

HashMap和LinkedHashMap的区别

HashMap:元素按照键是无序、不重复、无索引,值不做要求。
LinkedHashMap:元素按照键是有序、不重复、无索引、值不做要求。

Map集合使用:

1.Map集合存储的信息更加具体丰富。
  //Conllection:{"张三","男",23,"中国","深圳","程序员"}
  //Map:{name="张三",sex="男",age=23,country="中国",city="深圳",occupation="程序员"}

  Map<Person,String> maps = new HashMap<>
  maps.put(new Person("张三","男","23"),"中国");

2.Map集合适合存储对象数据

Map集合常用方法:

方法名说明
public v put(K key, V value)把指定的键与指定的值添加到Map集合中
public v remove(Object key)删除指定的值所对应的元素
public boolean isEmpty()判断集合是否为空
abstract int size()获取集合大小
public v get(Object key)根据键获取指定元素
public set keySet()获取Map集合中所有的键,存储到Set集合中
public Conllection values()获取Map集合中所有的值,存储到Conllection集合中
public set<Map.Entry<K,V>> entrySet()获取到Map集合中所有的键值对对象的集合(Set集合)
public boolean containKey(Object key)判断该集合中是否包含某个键
public boolean containValue(Object value)判断该集合中是否包含某个值

Map用法

Map<String,Integer> maps = new HashMap<>();
maps.put("张三",1); 		//添加元素
maps.put(null,null);

maps.clear();			//清空集合

maps.isEmpty();				//判断集合是否为空,为空返回true,不为空返回false

maps.get("张三");			//根据键获取对应值	返回1

maps.size();			//获取集合大小

maps.remove("张三");			//根据键删除某个元素		返回1

maps.containsKey("张三");			//判断集合是否包含 张三 ,返回true或flase
								//加群1025684353一起吹水聊天
maps.containsValue(1);			//判断集合是否包含键 1 ,返回true或flase

//map集合的键是无序不重复的,所以返回的是一个Set集合
Set<String> keys = maps.keySet();//获取Map集合中所有的键,存储到Set集合中

//Map集合的值是不能做要求的,可能重复,所以要用Conllection集合接收!
Conllection<Integer> values = maps.values();//将maps集合中的值存入到Conllection集合中

Map集合的遍历

map集合3中遍历方式:
1.“键找值”的方式遍历:先获取Map集合全部的键,再根据遍历键找值。
2.“键值对”的遍历方式:难度较大。
3.Lambda表达式遍历

//通过键找值方式遍历
Set<String> keys = maps.keySet();
  for(String key:keys){
	Integer value = maps.get(key);		//通过键获取对应的值
	System.out.println(key + "=" + value);
  }
}

//Lamboda表达式遍历
maps.forEach(k , v) ->{
  System.out.println(k + "=>" + v);
}

Collections工具类

什么是Collections工具类?

java.utils.Collections:是集合工具类
Collections并不属于集合,是用来操作集合的工具类

Conllections常用方法:

方法名说明
public static boolean addAll(Conlection<? super T> c,T… emlements)给集合对象批量添加元素
public static void shuffle(List<?> list)打乱集合顺序
public static void sort(List list)将集合中元素按照默认规则排序
public static void sort(List list,Comparator<? super T>)将集合中的元素按照指

Conllections常用方法的使用:

List<String> name = new ArrayList<>();
//给集合添加多个元素
//Conllections.addAll(集合名,需要添加的元素);
Conllections.addAll(name,"张三","李四","王五");

//打乱集合顺序
Conllections.shuffle(name);

//默认升序排序
Conllections.sort(name);

//自定义比较规则排序
List<Person> persons = new ArrayList<>();
Person person1 = new Person("张三",1,"男");
Person person2 = new Person("李四",2,"男");
Person person3 = new Person("王五",3,"男");
Person person4 = new Person("赵六",4,"男");
Conllections.addAll(persons,person1,person2,person3,person4);
//自定义规则
//加群1025684353一起吹水聊天
Conllections.sort(persons,new Comparator<Person>){
  @Override
  public int compare(Person p1,Person p2){
    //年龄比较升序
    if(p1.getAge() > p2.getAge()) return 1;
    if(p1.getAge() < p2.getAge()) return -1;
    /*
      //年龄比较降序
      if(p1.getAge() > p2.getAge()) return -1;
      if(p1.getAge() < p2.getAge()) return 1;
    */
    return 0;
  }
}

最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。 可以的话请给我一个三连支持一下我哟,我们下期再见

领取资料

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:36:16  更:2021-07-28 07:36:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 6:39:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码