List子类 ArrayList Vector 和 LinkedList

时间:2022-06-27 19:25:30

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]