首页 > 其他分享 >集合进阶(二)

集合进阶(二)

时间:2022-09-01 18:47:50浏览次数:35  
标签:进阶 元素 list System 索引 add 集合 println

list集合

特点

有序:存和取的元素顺序一致

有索引:可以通过索引操作元素

可重复:存储的元素可以重复

特有方法

Collection的方法List都继承了

List集合因为有索引,所以多了很多索引操作的方法

方法名说明
void add(int index,E element) 在此集合中的指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(int index) 返回指定索引处的元素
//1.创建一个集合
List<String> list = new ArrayList<>();
//2.添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
//void add(int index,E element) 在此集合中的指定位置插入指定的元素
//细节:原来索引上的元素会依次往后移
list.add(1,"qqq");
//E remove(int index) 删除指定索引处的元素,返回被删除的元素
String remove = list.remove(2);
System.out.println(remove);
//E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
String result = list.set(0,"qqq");
System.out.println(result);
//E get(int index) 返回指定索引处的元素
String s = list.get(1);
System.out.println(s);
System.out.println(list);

//List系列集合中的两个删除的方法
//1.直接删除元素
//2.通关索引进行删除
//1.创建集合并添加元素
List<Integer> list= new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
//2.删除元素
//此时啥才能的是1这个索引
//因为在调用方法的时候,如果方法出现了重载现象
//优先调用,实参跟形参类型一致的那个方法
list.remove(1);
//手动装箱,手动吧基本数据类型的1,变成Integer类型
Integer i = Integer.valueOf(1);
list.remove(i);
System.out.println(list);

遍历方式

迭代器遍历

列表迭代器遍历

增强for遍历

Lambda表达式遍历

普通for循环(因为List集合存在索引)

 //1.创建一个集合并添加元素
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//1.迭代器
Iterator<String> it = list.iterator();
while (it.hasNext()){
   String next = it.next();
   System.out.println(next);
}
//2.增强for
//下面的变量s,其实就是一个第三方的变量而已
//在循环的过程中,一次表示集合中的每一个元素
for (String s : list) {
   System.out.println(s);
}
//3.Lambda表达式
//forEach方法的底层其实就是一个循环变量,依次得到集合中的每一个元素
//并把每一个元素传递给下面的acceot方法
//accept方法的形参s,依次表示集合中的每一个元素
list.forEach(s-> System.out.println(s));
//4.普通for循环
for (int i = 0; i < list.size(); i++) {
   System.out.println(list.get(i));
}
//5.列表迭代器
//获取一个列表迭代器的对象,里面的指针默认也是默认指向0索引的
//额外添加了一个方法,在遍历的过程中,可以添加元素
ListIterator<String> slit = list.listIterator();
while (slit.hasNext()){
   String next = slit.next();
   if ("bbb".equals(next)) {
       slit.add("qqq");
  }
   System.out.println(next);
}
System.out.println(list);
while (slit.hasPrevious()){
   String next = slit.previous();
   System.out.println(next);
}

五中遍历方法对比

迭代器遍历:在遍历的过程中需要删除元素,请使用迭代器

列表迭代器:在遍历的过程中需要添加元素,请使用列表迭代器

增强for遍历&Lambdabiaods:仅仅想遍历,那么使用增强for或Lambda表达式

普通for:如果遍历的时候想操作索引,可以用普通for

ArrayList集合底层原理

1:利用空参创建的集合,在底层创建一个默认长度为0 的元素

2.添加第一个元素时,底层会创建一个新的长度为10的数组

3.存满时:会扩容1.5倍

4.如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准

 

 

LinkedList集合

底层数据结构是双链表,查询慢,增删快,但是如果是操作的是首尾元素,速度元素极快的

LinkedList本身多了很多直接操作首尾元素的特有API

特有方法说明
public void addFirst(E e) 在该列表的开头插入指定的元素
public void addLast(E e) 将指定的元素追加到此列表的末尾
public E getFirst() 返回此列表中的第一个元素
public E getLast() 返回此列表中的最后一个元素
public E removeFirst() 从此列表中删除
public E removeLast() 从此列表中删除并返回最后一个元素

 

迭代器源码分析

elementDate:获取了ArrayList这个数组底层的数组,之后的便可以直接使用,不需要在重写查找

 

标签:进阶,元素,list,System,索引,add,集合,println
From: https://www.cnblogs.com/kuangshihe/p/16647484.html

相关文章

  • JAVA常用集合解析
    JAVA常用集合解析常用集合属性详解集合底层实现原理常用集合适用场景分析集合属性详解集合是一个存放对象的引用的容器,在Java中它存在于java.util包下,List、Set......
  • 学习:python进阶 匿名函数,内置函数filter
               enumerate内置函数 ......
  • 学习 python进阶 类型提示
    python3.6后加入了新功能,用来声明一个变量的类型通过声明变量的类型,编辑器和一些功能给你提供更好的支持 容器类的需要引用typing包   ......
  • Java集合体系大杂烩
    Java集合体系主要包括Collection和Map两种,Collection存储着对象的集合,而Map存储着键值对(两个对象)的映射表。   下面贴出Map的继承/实现关系。Collection的子......
  • 索引进阶 | 再谈 MySQL 的慢 SQL 优化
    索引可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了......
  • 基础数据类型之集合
    1.集合的定义在{}内用逗号分开多个元素,多个元素满足以下三个条件:1.集合元素必须是不可变类型2.集合元素无序3.集合内元素没有重复(打印出来会自动去重)d={}默认是......
  • List泛型集合之基本使用
     数组//变量.单个数据intnumA=10;floatnumB=3.14f;boolisstart=false;Console.WriteLi......
  • python进阶__struct数据处理详解
    一、此模块可以执行Python值和以Pythonbytes对象表示的C结构之间的转换二、打包解包需要按照特定的方式来打包或者解包.该方式就是格式化字符串,它指定了数据类......
  • java使用Stream简单操作集合
     效果图  本项目使用springbootpom依赖<!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <v......
  • C语言进阶-指针的进阶
    C语言进阶之指针的进阶前言指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(32位平台/64位平台)。指针是有类型,指针的类型决定了指......