List集合

简介: List集合

集合的特点

1.具备容器基本特点增删改查

2.有序

3.元素可重复

list集合的遍历方式

1.foreach增强for循环

2.迭代器

3.fori通过下标遍历

package collaction;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class demo1 {
public static void main(String[] args) {
List list=new ArrayList<>();
list.add("a");
list.add("b");
//foreach
for (Object object : list) {
  System.out.println(object);
}
//迭代器
Iterator it=list.iterator();
while(it.hasNext()) {
  System.out.println(it.next());
}
//fori
for (int i = 0; i < list.size(); i++) {
  System.out.println(list.get(i));
}
}
}

list的子类Arraylist和Linkedlist的区别

Arraylis:数组(如图下)

Linkedlist:链表(如图下)

用linkedList完成一个堆栈容器

package collaction;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class demo2 {
public static void main(String[] args) {
LinkedList ll=new LinkedList<>();
ll.add("a");
ll.add("b");
ll.add("c");
DuiZhan dz=new DuiZhan(ll);
//定义一个方法,当这个方法被调用的时候,
//后存进去的元素要先输出,先存进去的元素要后输出
System.out.println(dz.pop());
System.out.println(dz.pop());
System.out.println(dz.pop());
}
}
class DuiZhan{
  private LinkedList ll;
  public DuiZhan(LinkedList ll) {
    super();
    this.ll = ll;
  }
//压栈push 弹栈pop
  public Object pop(){
    return ll.removeLast();
  }
}

增长因子论证(list调优)

1.证明数据结构就是数组

2.为什么数组长度不可变,集合List长度可变

import java.util.ArrayList;
//底层数组的增长因子为0.5,扩容为1.5倍
public class demo3 {
public static void main(String[] args) throws Exception {
ArrayList al =new ArrayList<>(50); //50指第一次扩容的数
for (int i = 0; i < 100; i++) {
al.add(i);
System.out.println(i+"\r");
getCurrentArrayLength(al);
    }
}
//获取ArrayList al对象底层数组的长度
private static void getCurrentArrayLength(ArrayList al) throws Exception{
// TODO Auto-generated method stub
Field f = al.getClass().getDeclaredField("elementData"); 
f.setAccessible(true);
Object[] object =(Object[]) f.get(al); 
System.out.println("当前集合底层数组的容器长度:"+object.length);
    }
}

list去重原理(重写equals;字符串不需要担心会重复)

package collaction;
import java.util.ArrayList;
import java.util.List;
public class demo4 {
  public static void main(String[] args) {
    List list = new ArrayList();
    list.add(new Student(1, "zs")); 
    list.add(new Student(2, "ls")); 
    list.add(new Student(3, "nb"));
    System.out.println("目前集合容器中的元素:"+list);
    if (!list.contains(new Student(3, "nb"))){
    list.add(new Student(3, "nb"));}
    System.out.println("目前集合容器中的元素:"+list);
    }
}
class Student{
  private int id;
  private String name;
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  @Override
  public String toString() {
    return "Student [id=" + id + ", name=" + name + "]";
  }
  public Student(int id, String name) {
    super();
    this.id = id;
    this.name = name;
  }
  public Student() {
    super();
    // TODO Auto-generated constructor stub
  }
  @Override
  public boolean equals(Object obj) {
    System.out.println("被调了");
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    Student other = (Student) obj;
    if (id != other.id)
      return false;
    if (name == null) {
      if (other.name != null)
        return false;
    } else if (!name.equals(other.name))
      return false;
    return true;
  }
}
目录
相关文章
|
4月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
4月前
|
安全
List集合特有功能
List集合特有功能
41 2
|
4月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
2月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
65 5
|
1月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
43 0
|
2月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
29 3
|
3月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
26 3
|
4月前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
|
4月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
下一篇
DataWorks