package notebook; import java.util.ArrayList; public class f { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> list = new ArrayList<>(); list.add("Cat"); ArrayList<String> list1=list; ArrayList<String> list2=(ArrayList<String>)(list.clone()); list.add("Dog"); list1.add("Tiger"); list2.add("Fox"); System.out.println(list==list1); System.out.println(list==list2); System.out.println("list1 is "+list1); System.out.println("list2 is "+list2); System.out.println("list2’size is "+list2.size()); } } 什么意思
时间: 2024-04-11 09:30:08 浏览: 16
这段代码主要是演示了Java中ArrayList的一些操作。首先创建了一个ArrayList对象list,并向其中添加了一个元素"Cat"。然后创建了一个list1对象,并将list赋值给list1。接着创建了一个list2对象,通过调用list的clone()方法来复制list中的元素,并将复制后的元素赋值给list2。然后分别向list、list1和list2中添加了不同的元素。最后输出了一些结果,包括判断list、list1和list2是否相等,分别打印list1和list2的内容,以及list2的大小(即元素个数)。
相关问题
import java.io.*; public class BufferedReaderTester { public static void main(String[] args) { String fileName="D://Hello.txt"; String line; try{ BufferedReader in =new BufferedReader(new FileReader(fileName)); line=in.readLine(); while(line!=null) { System.out.println(line); line=in.readLine();// TODO Auto-generated method stub } in.close(); } catch(IOException iox) { System.out.println("Problem reading"+fileName); } } }加入读出数据并显示的代码
您可以在读取每一行数据后,将其存储在一个`List`中,最后遍历输出整个`List`中的数据。下面是修改后的代码:
```java
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class BufferedReaderTester {
public static void main(String[] args) {
String fileName = "D://Hello.txt";
String line;
List<String> lines = new ArrayList<>();
try {
BufferedReader in = new BufferedReader(new FileReader(fileName));
line = in.readLine();
while (line != null) {
lines.add(line); // 存储每一行数据
line = in.readLine();
}
in.close();
} catch (IOException iox) {
System.out.println("Problem reading " + fileName);
}
// 输出每一行数据
for (String s : lines) {
System.out.println(s);
}
}
}
```
上述代码中,读取到的每一行数据都会被存储在一个`List`中,然后使用增强型`for`循环遍历输出。
已知字符串a,b。 在a字符串中删除部分字符串,添加最少字符使得a == b。import java.util.ArrayList; import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); tring str_0 = scan.nextLine(); String a = str_0; String str_1 = scan.nextLine().trim(); String b = str_1; scan.close(); int result = solution(a, b); System.out.println(result); } public static int solution(String a, String b){ int result = 0; // TODO: 请在此编写代码 return result; } }
好的,那么我们就在这段代码的solution方法中实现字符串编辑距离的算法。代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine();
String a = str_0;
String str_1 = scan.nextLine().trim();
String b = str_1;
scan.close();
int result = solution(a, b);
System.out.println(result);
}
public static int solution(String a, String b){
int m = a.length();
int n = b.length();
int[][] dp = new int[m+1][n+1];
for(int i=0; i<=m; i++) {
dp[i][0] = i;
}
for(int j=0; j<=n; j++) {
dp[0][j] = j;
}
for(int i=1; i<=m; i++) {
for(int j=1; j<=n; j++) {
if(a.charAt(i-1) == b.charAt(j-1)) {
dp[i][j] = dp[i-1][j-1];
} else {
dp[i][j] = Math.min(dp[i-1][j-1]+1, Math.min(dp[i-1][j]+1, dp[i][j-1]+1));
}
}
}
return dp[m][n];
}
}
```
我们先读取输入的两个字符串a和b,并分别计算它们的长度m和n。然后,定义一个二维数组dp,其中dp[i][j]表示将a的前i个字符变成b的前j个字符所需的最少操作数。
接下来,我们进行dp数组的初始化。当i或j为0时,对应的dp[i][j]就等于另一个字符串的长度,因为此时我们只需要添加或删除对应数量的字符即可。
最后,我们通过状态转移方程来计算dp[i][j]的值。具体来说,如果a[i-1]等于b[j-1],那么dp[i][j]就等于dp[i-1][j-1],因为此时不需要进行任何操作。如果a[i-1]不等于b[j-1],那么我们可以进行三种操作中的一种,取其中最小的值即可。
最终,我们返回dp[m][n],即将a变成b所需的最少操作数。