LinkedList集合的存储结构为链表,添加、删除快,查找慢。
LinkedList和ArrayList的父类都是List接口,因此他们有很多相同的方法。
创建Person类:
public 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) { if (age >= 0 || age <= 200) this.age = age; } public Person(String name, int age) { this.name = name; this.age = age; } }
写遍历集合的方法:
import java.util.LinkedList; public class Way { public void addPerson(LinkedList<Person> array) { Person p1 = new Person("张三", 12); Person p2 = new Person("李明", 14); Person p3 = new Person("李华", 23); Person p4 = new Person("吴佩佩", 2); Person p5 = new Person("王涛", 15); array.add(p1);//类中的add方法 array.add(p2); array.add(p3); array.add(p4); array.add(p5); } // 运用一般的get()方法遍历集合 public void printPerson(LinkedList<Person> link) { for (int i = 0; i < link.size(); i++) {//类中的size方法 Person p = link.get(i);//get方法 System.out.println(p.getName() + " " + p.getAge()); } } }
测试类:
import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList<Person> link=new LinkedList<Person>(); Way way=new Way(); way.addPerson(link); way.printPerson(link); } }
运行结果:
由于LinkedList具有查询慢,增删快的特性,为了充分利用它的特点,LinkedList集合还有很多特有的方法。
addFirst方法:
package pers.zhb.LinkedList; import java.util.Iterator; import java.util.LinkedList; public class Way { public void LinkedListPrint(LinkedList<Integer> link) { System.out.println("迭代器方法遍历集合:"); Iterator<Integer> linkIt = link.iterator();// 获取集合的实现类对象,病调用集合的iterator() while (linkIt.hasNext()) { Integer in = linkIt.next(); System.out.print(in); } } public void linkedListadd(LinkedList<Integer> link) { Integer it1 = new Integer(1); Integer it2 = new Integer(2); Integer it3 = new Integer(3); Integer it4 = new Integer(4); link.addFirst(it1); link.addFirst(it2); link.addFirst(it3); link.addFirst(it4); } }
package pers.zhb.LinkedList; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList<Integer> link = new LinkedList<Integer>(); Way way = new Way(); way.linkedListadd(link); way.LinkedListPrint(link); } }
由结果可知,LinkedList集合的addFirst集合符合“后进先出”的规则。
removeFirst()与getFirst():
package pers.zhb.LinkedList; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList<Integer> link = new LinkedList<Integer>(); Way way = new Way(); way.linkedListadd(link); link.removeFirst();// 方法removeFirst(); System.out.println("集合中的第一个元素为:" + link.getFirst());// 方法getFirst(); way.LinkedListPrint(link); } }
pop()、push()、isEmpty()方法的使用:
package pers.zhb.LinkedList; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList<Integer> link = new LinkedList<Integer>(); Way way = new Way(); way.linkedListadd(link); System.out.println("栈顶插入元素前,栈中的元素为:"); way.LinkedListPrint(link); link.push(5); System.out.println(); System.out.println("弹出栈顶的元素:" + link.pop()); System.out.println("栈顶弹出元素后,栈中的元素为:"); way.LinkedListPrint(link); System.out.println(); System.out.println("是否为空:" + link.isEmpty()); } }