package com.example.demo;
import org.mockito.internal.matchers.Null;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/*
void add(int index,Object element) :将元素element插入到list集合的index处
boolean addAll(int index,Collection c):将集合元素c所包含的所有元素都插入到index处
Object get(int index):返回集合index索引处的元素
int indexOf(Object o):返回对象o在List集合中第一次出现位置的索引
int lastindexOf(Object o):返回对象o在List集合中最后一次出现位置的索引
Object remove(int index):删除并返回index索引处的元素
Object set(int index,Object element) :将index索引处的元素替换成element对象,返回被替换的旧元素
List subList(int fromIndex,int toIndex):返回从索引处fromIndex(包含)到索引处toIndex(不包含)处所有集合元素组成的子集合
所有的List实现类都可以调用这些方法。
JDK1.8增加了下面2个方法
void replaceAll(UnaryOperator operator):根据operator指定的计算规则重新设置List集合所有元素
void sort(Comparator c):根据Comparator参数对List集合的元素排列
*/
//A类重写equals,为了说明list判断2个对象相等,是根据equals比较的,true为相等
class A{
public boolean equals(Object o){
return true;
}
}
public class ListTest {
public static void main(String[] args) {
List books = new ArrayList();
books.add("天文书");
books.add("数学书");
books.add(new String("语文书"));
books.add(new String("生物书"));
books.add(1,new String("英语书"));
//普通for循环遍历
System.out.println("普通for循环遍历");
for (int i = 0; i < books.size(); i++) {
System.out.println(books.get(i));
}
//for each循环遍历
System.out.println("for each循环遍历");
for (Object o:books) {
System.out.println(o);
}
System.out.println("迭代器循环遍历");
//迭代器循环
Iterator iterator = books.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//ListIterator迭代器循环
//boolean hasPrevious()返回该迭代器关联的集合是否还有上一个元素
//Object previous() 返回该迭代器的上一个元素
//void add(Object o):在指定位置插入一个元素
ListIterator listIterator = books.listIterator();
while (listIterator.hasNext()){
System.out.println(listIterator.next());
}
List list = books.subList(1, 3);
System.out.println("使用subList方法得到的新列表:"+list);
/*
使用new String创建字符串,与books原本的英语书是不一样的对象,
为什么使用indexof方法还是返回1呢?因为List判断两个对象相等的标准是只要通过equals方法比较返回true即可。
*/
System.out.println(books.indexOf(new String("英语书")));
/*
程序试图删除一个A对象,List将会调用该A对象的equals方法依次与集合元素进行比较,如果
该equals方法以某个集合对象作文参数时返回true,List将会删除这个元素,
因为A类重写了equals方法,该方法总是返回true,所以每次List集合中删除A对象时,
总是删除List集合中第一个元素。
*/
books.remove(new A());
System.out.println(books);
/*
演示sort方法 使用lambda表达式
*/
books.sort(((o1, o2) -> ((String)o1).length() - ((String)o1).length()));
System.out.println(books);
}
}
Java关于集合的思考
最新推荐文章于 2024-07-10 21:37:49 发布