目录
一、List_所有已知实现类
二、定义
三、方法
1、list中添加,获取,删除元素;(add(index,e),get(index),remove(index))
2、list中是否包含某个元素;(并不是equals)(是List中另外一个方法contains,用法与equals大差不离)
3、list中根据索引将元素数值改变(替换);(list.set(index,e))
4、list中查看(判断)元素的索引;(indexOf(Object o))
5、根据元素索引位置进行的判断;
?6、利用list中索引位置重新生成一个新的list(截取集合);(list.subList(fromindex,toindex))
7、判断list是否为空;(List.isEmpty())
8、返回Iterator集合对象;(使用Iterator迭代器方式需要创建对象,且这种迭代器方式多用于遍历)
9、将集合转换为字符串;List.toString();
四、ending!
一、List_所有已知实现类
?我们需要重点掌握:ArrayList? 与? LinkedList.
二、定义
List是一种有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
与集合不同,列表通常允许重复的元素。 更正式地,列表通常允许成对的元素e1 和e2 ,使得e1.equals(e2) ,并且如果它们允许空元素,它们通常允许多个空元素。 有人可能希望实现一个禁止重复的列表,当用户尝试插入时会抛出运行时异常,但是我们预计这种使用是罕见的。
该List 接口放置额外的约定,超过指定Collection 界面上的合同iterator , add , remove , equals ,并hashCode 方法。 其他继承方法的声明也包括在这里以方便。
List 接口提供四种位置(索引)访问列表元素的方法。 列表(如Java数组)为零。 请注意,这些操作可能与某些实现的索引值(例如LinkedList 类)成时执行。 因此,如果调用者不知道实现,则通过迭代列表中的元素通常优先于索引。
List 接口提供了一个特殊的迭代器,称为ListIterator ,允许元素插入和替换,以及双向访问以及Iterator 接口提供的常规操作。 提供了一种方法来获取从列表中的指定位置开始的列表迭代器。
List 接口提供了两种搜索指定对象的方法。 从性能角度来说,谨慎使用这些方法。 在许多实现中,它们将执行昂贵的线性搜索。
List 接口提供了两种方法来有效地插入和删除列表中任意一点上的多个元素。
注意:虽然列表允许将其自身作为元素,但建议您非常小心: equals 和hashCode 方法在这样的列表中不再被很好的定义。
某些列表实现对它们可能包含的元素有限制。 例如,一些实现禁止空元素,有些实现对元素的类型有限制。 尝试添加不合格元素会引发未经检查的异常,通常为NullPointerException 或ClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,对于不完成不会导致将不合格元素插入到列表中的不合格元素的操作,可能会在执行选项时抛出异常或成功。 此异常在此接口的规范中标记为“可选”。
三、方法
?其中有一些方法不常用我就不举例了。
接下来我们一个一个方法编译执行看一下:
1、list中添加,获取,删除元素;(add(index,e),get(index),remove(index))
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引处
list.add(1,"ying");
//remove(int index)删除指定索引位置的元素
list.remove(2);
//get(index)获取指定索引位置的元素
list.get(2);
//增强for循环
for (String s:list){
System.out.println(s);
}
System.out.println("--------------------");
System.out.println(list);
System.out.println("--------------------");
}
}
//运行结果:
E:\develop\JDK\bin\java.exe "-javaagent:E:\IDEA\IntelliJ IDEA Community Edition
[hello, world, java]
--------------------
hello
ying
java
--------------------
[hello, ying, java]
--------------------
Process finished with exit code 0
2、list中是否包含某个元素;(并不是equals)(是List中另外一个方法contains,用法与equals大差不离)
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引处
list.add(1,"ying");
//判断是否存在相同元素,有则返回true
String name="ying";
if (list.contains(name)){
System.out.println("ying in list");
}else {
System.out.println("ying no in list");
}
}
}
3、list中根据索引将元素数值改变(替换);(list.set(index,e))
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引处
list.add(1,"ying");
//根据list索引,修改索引对应的集合内相应位置的元素(list.set(int index,e"修改值"))
list.set(0,"small");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
4、list中查看(判断)元素的索引;(indexOf(Object o))
//根据元素值查看索引值indexOf。
List<Integer> number = new ArrayList<Integer>();
number.add(1);
number.add(2);
number.add(3);
number.add(2);
//返回元素值等于2的索引.
System.out.println(number.indexOf(2));
//返回元素值等于2的最后的索引.
System.out.println(number.lastIndexOf(2));
}
//输出结果
1
3
Process finished with exit code 0
从结果我们可以看出,根据集合中int类型的值2,我们得到的索引1,刚好为我们添加的顺序。
5、根据元素索引位置进行的判断;
List<Integer> number = new ArrayList<Integer>();
number.add(1);
number.add(2);
number.add(3);
number.add(2);
//返回元素值等于2的索引.
System.out.println(number.indexOf(2));
//返回元素值等于2的最后的索引.
System.out.println(number.lastIndexOf(2));
//根据元素索引位置进行的判断
if (number.indexOf(3) == 2) {
System.out.println("元素3在索引2这个位置.");
}
if (number.lastIndexOf(2) == 3) {
System.out.println("最后的元素2在索引3这个位置.");
}
1
3
元素3在索引2这个位置.
最后的元素2在索引3这个位置.
Process finished with exit code 0
? 6、利用list中索引位置重新生成一个新的list(截取集合);(list.subList(fromindex,toindex))
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引处
list.add(1,"ying");
//利用subList()截取, 然后给list,末尾指针一般会减一取值。
list=list.subList(0,2);
for (String s:list){
System.out.println(s);
}
7、判断list是否为空;(List.isEmpty())
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
if (list.isEmpty()){
System.out.println("list集合为空!");
}else {
System.out.println("list集合中存在元素,不为空!");
}
8、返回Iterator集合对象;(使用Iterator迭代器方式需要创建对象,且这种迭代器方式多用于遍历)
package ListDemo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//迭代器Iterator
Iterator it = list.iterator();
while(it.hasNext()) {
Object o = it.next();
System.out.println(o);
}
9、将集合转换为字符串;List.toString();
List<Integer> number = new ArrayList<Integer>();
number.add(1);
number.add(2);
number.add(3);
number.add(2);
String str = "";
str = number.toString();
System.out.println(str);
//输出结果
[1, 2, 3, 2]
Process finished with exit code 0
四、ending!
今天的分享就到这里了,谢谢!
|