List接口

List接口继承了Collection接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。

1)使用List(如ArrayList)时,不会自动调用hashCode()方法。因为在List中,重复了就重复了,不需判断,保证唯一性。

2)List中添加了下标index的功能,这样对List的修改可以利用set方法对指定位置的元素直接进行替换,不需要象Set那么复杂(要转换成数组才能修改,之后还要转换回去)。

3)Collection用Iterator迭代器,而List可以用ListIterator列表迭代器。前者只能next(),后者不但包含next()方法,还包含previous()方法。因此,如果要用List做类似书的翻页功能,不但可以向后翻,还可以向前翻。


package cn.hncu.list;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


//set在执行set.add()会执行hashcode里面的代码  而List不会
public class ListDemo {


public static void main(String[] args) {
List<Object> list=new ArrayList<Object>();
list.add(new Person("张三", 22));
list.add(new Person("李四", 11));//相比Set,List当中增加一些有关位置的操作
list.add(new Person("王五", 51));
list.add(2,new Person("Jack", 41));
list.add(new Person("lzp", 25));
list.add(new Person("wja", 2));
list.remove(1);
list.set(list.size()-1, "wwwwww");
Iterator it=list.iterator();//迭代之后不能进行操作
while(it.hasNext()){
System.out.println(it.next());
}
}


}


class Person {
private String name;
private int 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;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}



}


此外,LinkedList添加了一些处理列表两端元素的方法,使用这些方法,可以轻松地把LinkedList当作一个堆栈、队列或其它面向端点的数据结构。


package cn.hncu.list;


import java.util.LinkedList;
import java.util.ListIterator;


//分页功能
public class LinkListDemo {


public static void main(String[] args) {
LinkedList link=new LinkedList();
link.add("111");
link.add("last");
link.add("0");
link.addLast("2222");
link.addFirst("abc");
ListIterator it=link.listIterator(3);
while(it.hasPrevious()){
System.out.println(it.previous());//方向遍历
}
}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值