AP计算机教程7-4:操作列表
插入元素
元素可以被插入到列表中。如果使用add(obj),参数中的object会被插入到列表的最后。试着运行以下代码。
import java.util.*; // import all classes in this package.
public class Test
{
public static void main(String[] args)
{
List<String> nameList = new ArrayList<String>();
nameList.add("Diego");
System.out.println(nameList);
nameList.add("Grace");
System.out.println(nameList);
nameList.add("Diego");
System.out.println(nameList);
System.out.println(nameList.size());
}
}
注意我们将相同的字符串插入了超过一次。列表中可以包含有重复元素。
事实上,interface List中定义了两个不同的add method。在add(obj)之外,我们还有add(index,obj)可以将object插入到列表长度范围内任意指定位置。为了给新插入的元素腾出空间,插入点及其之后的元素均会后移一位。
import java.util.*; // import all classes in this package.
public class Test
{
public static void main(String[] arts)
{
List list1 = new ArrayList();
list1.add(new Integer(1));
System.out.println(list1);
list1.add(new Integer(2));
System.out.println(list1);
list1.add(1, new Integer(3));
System.out.println(list1);
list1.add(1, new Integer(4));
System.out.println(list1);
System.out.println(list1.size());
}
}
列表可以存放object,但不能存储基本数据类型。这意味着int值会被包装成Integer object以储存在列表中。如上所示,你可以用new Integer(value)的形式来做到这一点。当然你还可以直接使用int值,Java编译器会自动将其转换为Integer object,这被称为自动装箱(autoboxing)。当你从Integer的列表中读取int值时,这被称为拆箱(unboxing)。下面的代码与之前的例子作用一模一样。
import java.util.*; // import all classes in this package.
public class Test
{
public static void main(String[] arts)
{
List list1 = new ArrayList();
list1.add(1);
System.out.println(list1);
list1.add(2);
System.out.println(list1);
list1.add(1, 3);
System.out.println(list1);
list1.add(1, 4);
System.out.println(list1);
System.out.println(list1.size());
}
}
0:00
What will print when the following code executes?
List<Integer> list1 = new ArrayList<Integer>(); list1.add(new Integer(1)); list1.add(new Integer(2)); list1.add(new Integer(3)); list1.add(2, new Integer(4)); list1.add(new Integer(5)); System.out.println(list1);
add(2, new Integer(4))会将4插入在第三位,而之前索引为2的3则要往后移一位。What will print when the following code executes?
List<String> list1 = new ArrayList<String>();
list1.add("Anaya");
list1.add("Layla");
list1.add("Sharrie");
list1.add(1, "Sarah");
System.out.println(list1);
Sarah插入到第二位,其他顺序不变。What will print when the following code executes?
List<Integer> list1 = new ArrayList<Integer>(); list1.add(5); list1.add(4); list1.add(3); list1.add(1, 2); System.out.println(list1);
2插入到第二位,其他顺序不变。What will print when the following code executes?
List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add(3); list1.add(2); list1.add(1); System.out.println(list1);
读取与替换元素
对于给定索引位置,可以用obj = listName.get(index)来读取元素,用listName.set(index,obj)来替换元素。
import java.util.*; // import all classes in this package.
public class Test
{
public static void main(String[] args)
{
List<String> nameList = new ArrayList<String>();
nameList.add("Diego");
nameList.add("Grace");
nameList.add("Deja");
System.out.println(nameList);
System.out.println(nameList.get(0));
System.out.println(nameList.get(1));
System.out.println(nameList.get(2));
nameList.set(1, "John");
System.out.println(nameList);
}
}
以下表格比较了数组和列表在存取元素方面的异同。
| 数组 | 列表 | |
| 读取元素 | value = arrayName[index] |
obj = listName.get(index) |
| 替换元素 | arrayName[index] = value |
listName.set(index,obj) |
删除元素
你还可以使用remove(index)来删除给定位置的元素。这个method会返回删除的元素让程序员做进一步处理,并同时把列表中后续元素前移以补上空位。
import java.util.*; // import all classes in this package.
public class Test
{
public static void main(String[] arts)
{
List list1 = new ArrayList();
list1.add(new Integer(1));
list1.add(new Integer(2));
list1.add(new Integer(3));
System.out.println(list1);
list1.remove(1);
System.out.println(list1);
}
}
注意remove(index)的参数是索引位置,而不是按参数进行元素值的查找。比如在以上的示例中,列表中移除的数是位于第二位的2,而不是数值与参数相等的1。
What will print when the following code executes?
List<Integer> list1 = new ArrayList<Integer>(); list1.add(new Integer(1)); list1.add(new Integer(2)); list1.add(new Integer(3)); list1.set(2, new Integer(4)); list1.add(2, new Integer(5)); list1.add(new Integer(6)); System.out.println(list1);
3被替换成4,5再插入到4之前。What will print when the following code executes?
List<String> list1 = new ArrayList<String>();
list1.add("Anaya");
list1.add("Layla");
list1.add("Sharrie");
list1.set(1, "Destini");
list1.add(1, "Sarah");
System.out.println(list1);
Destini替换Layla,然后Sarah再插入到Destini前面。What will print when the following code executes?
List<Integer> numList = new ArrayList<Integer>(); numList.add(new Integer(1)); numList.add(new Integer(2)); numList.add(new Integer(3)); numList.set(2, new Integer(4)); numList.add(1, new Integer(5)); numList.add(new Integer(6)); System.out.println(numList);
3被替换成4,5再插入到2之前。What will print when the following code executes?
List<Integer> list1 = new ArrayList<Integer>(); list1.add(new Integer(1)); list1.add(new Integer(2)); list1.add(new Integer(3)); list1.remove(1); System.out.println(list1);
2。What will print when the following code executes?
List<Integer> list1 = new ArrayList<Integer>(); list1.add(new Integer(1)); list1.add(new Integer(2)); list1.add(new Integer(3)); list1.remove(2); System.out.println(list1);
3。
0 条评论