java-list集合类

在这里插入图片描述
在这里插入图片描述

List是Java中比较常用的集合类,关于List接口有很多实现类

在这里插入图片描述

在这里插入图片描述
ArrayList实现了List接口,是List的实现

ArrayList

ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。
集合的创建:ArrayList<Integer> arrayList = new ArrayList<Integer>();

LinkedList

LinkedList底层是通过双向链表实现的。所以,LinkedList和ArrayList之前的区别主要就是数组和链表的区别。

数组中查询和赋值比较快,因为可以直接通过数组下标访问指定位置。

链表中删除和增加比较快,因为可以直接通过修改链表的指针(Java中并无指针,这里可以简单理解为指针。其实是通过Node节点中的变量指定)进行元素的增删。
LinkedList和ArrayList相比,增删的速度较快。但是查询和修改值的速度较慢
集合的创建:LinkedList<Integer> linkedList = new LinkedList<Integer>();
此处之上为转载:https://blog.csdn.net/qq_38218238/article/details/82904926

List的用法

在这里插入图片描述
List接口的常用实现类有ArrayList和LinkedList,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化ArrayList或LinkedList;

list.add()

添加对象:

List<String>list=new LinkedList<String>();
  list.add("tom");
  System.out.println(list.get(0));

结果:

tom

注意:add(int index, Object obj),向指定索引位置添加对象

public static void main(String[] args) {
List<String>list=new ArrayList<String>();
   list.add(0,"a");
   list.add(1,"e");
   list.add(2,"d");

结果:

a
e
d

list.get() 获取方法

List<String>list=new ArrayList<String>();
list.add("tom");
String c=list.get(0);
System.out.println(c);

结果:

tom

list.remove(index);删除方法;按照索引删除

List<String>list=new ArrayList<String>();
list.add("tom");
list.remove(0);
System.out.println(list.gei(0));

结果:

报错!因为长度为0

remove(Object o); 按照元素内容删除;

list中是否包含某个元素;

方法:.contains(Object o); 返回true或者false

List<String>list=new ArrayList<String>();
   list.add("香蕉");
   list.add("苹果");
   list.add("菠萝");
   //for循环遍历
   for(int i=0;i<list.size();i++)
   {
    System.out.println(list.get(i));
   }
   //true  OR  false
   System.out.println("list中是否包含苹果:"+list.contains("苹果"));

结果:

香蕉
苹果
菠萝
list中是否包含苹果:true

list中根据索引将元素数值改变(替换);

list.set(index, element);:替换原来位置上的字符

List<String>list=new ArrayList<String>();
   System.out.println(list.size());
   list.add("a");
   list.add("b");
   list.add("c");
   list.add("d");
   list.add("e");
   list.set(0,"Alice");
   list.set(1,"Alice");
   System.out.println(list.size());
   for(int i=0;i<list.size();i++)
    System.out.println(list.get(i));

结果:

0
5
Alice
Alice
c
d
e

list.add(index, element);将添加的放到索引位置,原来的数据往下移

List<String>list=new ArrayList<String>();
   System.out.println(list.size());
   list.add("a");
   list.add("b");
   list.add("c");
   list.add("d");
   list.add("e");
   list.add(0,"Alice");
   list.add(1,"Alice");
   System.out.println(list.size());
   for(int i=0;i<list.size();i++)
    System.out.println(list.get(i));

结果:

0
7
Alice
Alice
a
b
c
d
e

list中查看(判断)元素的索引;

list.indexOf()和 list.lastIndexOf()的不同

 List<String>list=new ArrayList<>();
      list.add("a");    //索引为0
      list.add("b");    //索引为1
      list.add("c");    //索引为2
      list.add("a");    //索引为3
      list.add("c");    //索引为4
             System.out.println(list.indexOf("a"));
             System.out.println(list.lastIndexOf("a"));
             System.out.println(list.indexOf("c"));
             System.out.println(list.lastIndexOf("c"));

结果:

0
3
2
4

利用list中索引位置重新生成一个新的list(截取集合)

方法: .subList(fromIndex, toIndex);  .size() ; 该方法得到list中的元素数的和

   List<String> list=new ArrayList<>();
            list.add("a");    //索引为0
            list.add("b");    //索引为1
            list.add("c");    //索引为2
            list.add("d");    //索引为3
            list.add("e");    //索引为4
            //原list进行遍历
            for(String pho:list){
                System.out.println(pho);
            }
            //生成新list
            list=list.subList(1, 4);  //.subList(fromIndex, toIndex)      //利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3
            for (int i = 0; i < list.size(); i++) { //list.size() 该方法得到list中的元素数的和
                System.out.println("新的list包含的元素是"+list.get(i));
            }

对比两个list中的所有元素

if (person.equals(fruits)) {
    System.out.println("两个list中的所有元素相同");
    }

判断list是否为空

方法:list.isEmpty() 空则返回true,非空则返回false

if (list.isEmpty()) {
                System.out.println("空的");
            }else {
                System.out.println("不是空的");
            }

结果:

不是空的

将集合转换为字符串;

String liString="";
liString=person.toString();
System.out.println("将集合转换为字符串:"+liString);

将集合转换为数组;

System.out.println("将集合转换为数组:"+person.toArray());

迭代器(Iterator)

在这里插入图片描述

迭代器(Iterator)
  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
  Java中的Iterator功能比较简单,并且只能单向移动:
  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
  (2) 使用next()获得序列中的下一个元素。
  (3) 使用hasNext()检查序列中是否还有元素。
  (4) 使用remove()将迭代器新返回的元素删除。
  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

迭代器的应用

list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
     String str = (String)iter.next();
     System.out.println(str);
 }
 /*迭代器用于while循环
 Iterator iter = l.iterator();
 while(iter.hasNext()){
     String str = (String) iter.next();
     System.out.println(str);
 }
 */

Person类

public class Person {
private String name;
private int age;
public Person() {
 super();
}
public Person(String name, int age) {
 super();
 this.name = name;
 this.age = age;
}
public String getName() {
 return name;
}
public void setName(String name) {
 this.name = name;
}
public int getAge() {
 return age;
}
public void setAge(int age) {
 this.age = age;
}
}


Iterator it=list.iterator();
while(it.hasNext()) {
Person p0=it.next();
System.out.println(“Person”+p0.getName()+" ,"+p0.getAge());
}
System.out.println(list.contains(new Person(“tom999”,99)));
}


发布了50 篇原创文章 · 获赞 75 · 访问量 6686

猜你喜欢

转载自blog.csdn.net/weixin_45822638/article/details/104056954