Java-List

本文详细讲解了Java中的List数据结构,特别是ArrayList和LinkedList的区别,以及如何创建、操作和遍历List。重点介绍了在实际开发中如何选择ArrayList,以及List允许重复元素的特性。通过实例演示了如何添加、删除元素,以及使用Iterator进行遍历。
摘要由CSDN通过智能技术生成

List

集合类中,List是最基础的一种集合:它是一种有序列表。
List的行为和数组几乎是完全相同:List内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置。

类型

List有两种类型的List:

  • ArrayList:擅长随机访问元素,但是在List中间插入和删除元素时速度较慢。
  • LinkedList:随机访问较慢,但是插入和删除操作快

删除和增加

删除操作:实际上就是把删除元素后面的元素依次往前挪动一个位置。
添加操作:是把添加的元素后面的元素一次往后挪动一个位置,腾出来的位置为新加的元素。
这两种操作,用数组实现起来都很麻烦。

在实际应用中,需要增删元素的有序列表,使用最多的是ArrayList
ArrayList在内部使用了数组来存储所有元素,例如一个ArrayList有5个元素,实际数组大小为6(即有一个空位);

List 特点

  • List允许我们添加重复元素,即List内部的元素可以重复:
package com.wtcto;
import java.util.*;

public class HelloJava {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("pear");
        list.add("apple");
        System.out.println(list.size());//3
    }

}

创建List

可以这样创建一个List:

List<Apple>apples = new ArrayList<>();

注意ArrayList已经被向上转型为了List。
除了使用ArrayList和LinkedList,我们还可以通过List接口提供的of()方法,根绝给定元素快速创建List:

List<Integer>list = List.of(1,3,5);

但是List.of()方法不接受null值。

遍历List

使用迭代器Iterator来访问List。Iterator本身也是对象,它由List的实例调用iterator()方法时候创建的。
一般遍历数组都是采用for循环或者增强for,这两种方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了iterator接口或者Listlterator接口。

package com.wtcto;
import java.util.*;

public class HelloJava {
    public static void main(String[] args) {
      List<String>list= new ArrayList<String>();
      list.add("apple");
      list.add("banana");
      list.add("bear");
      //第一种方法遍历使用for-earch
        for (String str:list){
            System.out.println(str);
        }
      //第二种遍历,使用迭代器进行相关遍历
        Iterator<String>ite=list.iterator();
        while(ite.hasNext()){//判断下一个元素有值
            System.out.println(ite.next());
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java-diff-utils是一个用于计算和应用文本文件之间差异的Java库。它提供了一组算法和工具,可以比较两个文本文件并生成差异结果。这些差异结果可以用于生成补丁文件,也可以直接应用于原始文件以生成目标文件。 以下是java-diff-utils的一些主要功能和用法示例: 1. 比较两个文本文件的差异: ```java import difflib.DiffUtils; import difflib.Patch; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; public class DiffExample { public static void main(String[] args) throws IOException { File originalFile = new File("path/to/original/file.txt"); File modifiedFile = new File("path/to/modified/file.txt"); List<String> originalLines = Files.readAllLines(originalFile.toPath(), StandardCharsets.UTF_8); List<String> modifiedLines = Files.readAllLines(modifiedFile.toPath(), StandardCharsets.UTF_8); Patch<String> patch = DiffUtils.diff(originalLines, modifiedLines); for (String line : patch.getDeltas()) { System.out.println(line); } } } ``` 2. 生成补丁文件: ```java import difflib.DiffUtils; import difflib.Patch; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; public class PatchExample { public static void main(String[] args) throws IOException { File originalFile = new File("path/to/original/file.txt"); File modifiedFile = new File("path/to/modified/file.txt"); File patchFile = new File("path/to/patch/file.patch"); List<String> originalLines = Files.readAllLines(originalFile.toPath(), StandardCharsets.UTF_8); List<String> modifiedLines = Files.readAllLines(modifiedFile.toPath(), StandardCharsets.UTF_8); Patch<String> patch = DiffUtils.diff(originalLines, modifiedLines); FileWriter writer = new FileWriter(patchFile); patch.toUnifiedDiff().forEach(line -> { try { writer.write(line + "\n"); } catch (IOException e) { e.printStackTrace(); } }); writer.close(); } } ``` 请注意,上述示例中的文件路径需要根据实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值