List子类 ArrayList Vector 和 LinkedList
List集合的子类遍历集合中的元素可以使用的任何迭代遍历方式
面试题:
List子类的特点?
ArrayList
底层数据结构是数组,查询快,增删慢,线程不安全,不同步,效率高
vector
底层数据结构是数组,查询快,增删慢,线程安全,同步,效率低
LinkedList
底层数据结构数链表,查询慢,增删快,线程不安全,不同步,效率高
应用场景:ArrayList:开发中用的非常多!如果给一个需求,不知道使用谁的时候,都使用ArrayList
ArrayList
需求:
ArrayList去除集合中字符串的重复值(字符串的内容相同)(创建新集合)
代码:
public static void main(String[] args) {
ArrayList al= new ArrayList();
al.add("hello") ;
al.add("world") ;
al.add("world") ;
al.add("java") ;
al.add("javaee") ;
al.add("javaweb") ;
al.add("javaee") ;
al.add("javaee") ;
ArrayList nal = new ArrayList();
Iterator i = al.iterator();
while(i.hasNext()){
String s = (String)i.next();
if(nal.contains(s)){
nal.add(s);
}
}
Iterator i2 = nal.iterator();
while (i2.hasNext()){
String s = (String)i2.next();
System.out.println(s);
}
}
结果:
hello
world
java
javaee
javaweb
需求:
ArrayList去除集合中字符串的重复值(字符串的内容相同)附件条件:不允许新建集合去完成!
代码:
public static void main(String[] args) {
ArrayList al= new ArrayList();
al.add("hello") ;
al.add("world") ;
al.add("world") ;
al.add("java") ;
al.add("javaee") ;
al.add("javaweb") ;
al.add("javaee") ;
al.add("javaee") ;
for(int x =0 ;x<al.size()-1;x++){
for(int y = 1+x;y<al.size();y++){
if(al.get(x).equals(al.get(y))){
al.remove(y);
y--;
}
}
}
Iterator i = al.iterator();
while(i.hasNext()){
String s = (String)i.next();
System.out.println(s);
}
}
结果:
hello
world
java
javaee
javaweb
Vector
Vecotr的特有功能:
添加功能:
public void addElement(Object obj) :给Vector集合中添加元素
public Object elementAt(int index) ------>get(int index):获取指定索引处的元素
public Enumeration elements() ---->Iterator iterator()
boolean hasMoreElements() ---->hasNext():判断是否有下一个可以迭代的元素
Object nextElement() ----->next()
代码:
public static void main(String[] args) {
Vector v = new Vector();
v.addElement("Hello");
v.addElement("World");
v.addElement("Java");
for(int x = 0;x<v.size();x++){
String s = (String)v.elementAt(x);
System.out.println(s);
}
System.out.println("*********");
Enumeration e = v.elements();
while(e.hasMoreElements()){
String s = (String)e.nextElement();
System.out.println(s);
}
}
结果:
Hello
World
Java
Hello
World
Java
LinkedList
特有功能:
和添加相关的方法:
public void addFirst(Object e)
public void addLast(Object e)
和获取相关的方法:
public Object getFirst()返回此列表的第一个元素。
public Object getLast():返回此列表的最后一个元素
和删除相关的方法:
public Object removeFirst():删除此列表的第一个元素
public Object removeLast():删除此列表的最后一个元素
代码:
public static void main(String[] args) {
LinkedList ll = new LinkedList();
ll.add("Hello");
ll.add("World");
ll.add("Java");
/*和添加相关的方法:
public void addFirst(Object e)
public void addLast(Object e)*/
ll.addFirst("你好");
ll.addLast("我爱你");
System.out.println(ll);
System.out.println("*******************");
/*和获取相关的方法:
public Object getFirst()返回此列表的第一个元素。
public Object getLast():返回此列表的最后一个元素*/
System.out.println(ll.getFirst());
System.out.println(ll.getLast());
System.out.println("********************");
/* 和删除相关的方法:
public Object removeFirst():删除此列表的第一个元素
public Object removeLast():删除此列表的最后一个元素*/
ll.removeFirst();
ll.removeLast();
System.out.println(ll);
}
结果
[你好, Hello, World, Java, 我爱你]
你好
我爱你
[Hello, World, Java]