Java程序向LinkedList添加元素

Java程序向LinkedList添加元素

什么是LinkedList

LinkedList是Java集合框架中的一个类,实现了List接口,它采用双向链表的数据结构来存储数据元素。与ArrayList相比,LinkedList在增加或删除元素时的性能更好,同时它也支持高效的随机访问,但是在插入和删除时,它需要更多的时间来重构链表结构。

使用LinkedList时应该有意识地使用它的优势,如在末尾或开头添加或删除元素,而不是在中间插入或删除元素。

如何向LinkedList添加元素

向LinkedList中添加元素可以使用add方法。如果要在列表末尾添加元素,则可以使用addLast方法,效果与add方法相同。如果需要在列表开头插入元素,则可以使用addFirst方法。

add方法

LinkedList list = new LinkedList<>();

list.add("A");

list.add("B");

list.add("C");

上面代码向list中添加了三个元素“A”,“B”和“C”。这些元素将按照它们被添加的顺序存储在列表中。

addLast方法

LinkedList list = new LinkedList<>();

list.addLast("A");

list.addLast("B");

list.addLast("C");

上面的代码按照与add方法相同的顺序,将元素“A”,“B”和“C”添加到list中。

addFirst方法

LinkedList list = new LinkedList<>();

list.addFirst("A");

list.addFirst("B");

list.addFirst("C");

上面的代码添加了元素“C”,“B”和“A”,按照它们添加的顺序存储在列表中。元素“A”位于链表开头,而元素“C”位于链表末尾。

Java程序示例

下面是一个简单的Java程序示例,它向LinkedList中添加一些元素,并遍历整个链表来输出每个元素。

import java.util.LinkedList;

public class LinkedListDemo {

public static void main(String[] args) {

LinkedList<String> list = new LinkedList<>();

list.add("A");

list.add("B");

list.add("C");

System.out.println("LinkedList elements:");

for (String s : list) {

System.out.println(s);

}

}

}

解析:

首先,我们创建了一个LinkedList对象,该对象可以存储String类型的元素。然后我们使用add方法向列表中添加三个元素“A”,“B”和“C”。最后,我们使用for-each循环遍历整个链表并输出每个元素的值。

这段代码的输出结果如下:

LinkedList elements:

A

B

C

可以看到,链表中的所有元素都被正确地输出了。

向LinkedList中添加自定义对象

在Java中,我们可以将任何对象添加到LinkedList中。如果要添加自定义对象,则必须确保该对象类实现了Comparable接口或提供了Comparator对象。

当LinkedList需要对元素进行排序时,它会使用Comparable接口或Comparator对象来比较元素的值。如果对象类没有实现Comparable接口,那么它必须提供一个Comparator对象,该对象可以比较对象的值。

使用Comparable接口

首先,让我们为自定义对象创建一个类Student,该类实现了Comparable接口。以下是Student类的代码:

public class Student implements Comparable {

private String name;

private int age;

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public int getAge() {

return age;

}

@Override

public int compareTo(Student o) {

return name.compareTo(o.getName());

}

}

上面的代码定义了一个Student类,该类包括学生姓名和年龄等信息,以及一个compareTo方法,该方法根据学生姓名将学生对象按字母顺序进行比较。

现在,我们可以创建一个LinkedList对象,并向其中添加Student对象:

import java.util.LinkedList;

public class LinkedListDemo {

public static void main(String[] args) {

LinkedList<Student> list = new LinkedList<>();

list.add(new Student("Tom", 20));

list.add(new Student("Jack", 22));

list.add(new Student("John", 19));

System.out.println("LinkedList elements:");

for (Student s : list) {

System.out.println(s.getName() + " " + s.getAge());

}

}

}

可以看到,我们创建了一个LinkedList<Student>对象,并向其中添加了三个Student对象Tom、Jack和John。然后,我们遍历整个链表并输出每个Student对象的姓名和年龄。

输出结果如下:

LinkedList elements:

Jack 22

John 19

Tom 20

可以看到,链表中的所有元素都被正确地输出了,按字母顺序排列。

使用Comparator对象

还可以使用Comparator对象来定义自定义排序顺序。Comparator是一个单独的比较器对象,与要排序的对象分离。当一个对象的compareTo方法不满足要求时,我们可以使用Comparator对象的比较方法来排序元素。以下是使用Comparator对象比较学生年龄的示例代码:

import java.util.Comparator;

import java.util.LinkedList;

public class LinkedListDemo {

public static void main(String[] args) {

LinkedList<Student> list = new LinkedList<>();

list.add(new Student("Tom", 20));

list.add(new Student("Jack", 22));

list.add(new Student("John", 19));

list.sort(new Comparator<Student>() {

public int compare(Student s1, Student s2) {

return s1.getAge() - s2.getAge();

}

});

System.out.println("LinkedList elements:");

for (Student s : list) {

System.out.println(s.getName() + " " + s.getAge());

}

}

}

在上面的示例代码中,我们创建了一个Comparator对象,该对象按照学生年龄对学生进行比较。我们将该对象作为参数传递给LinkedList类的sort方法,该方法使用该对象对元素进行排序。最后,我们使用for-each循环遍历整个链表并输出每个Student对象的姓名和年龄。

输出结果如下:

LinkedList elements:

John 19

Tom 20

Jack 22

可以看到,链表中的所有元素都被正确地输出了,按年龄升序排列。

使用List接口的方法向LinkedList中添加元素

LinkedList类实现了List接口,因此我们也可以使用List接口中定义的方法向LinkedList中添加元素。以下是List接口中支持向List中添加元素的常用方法:

add(int index, E element):将元素插入到指定的索引位置,其他元素向后移动。

addAll(Collection<? extends E> c):将集合中的所有元素添加到列表的末尾。

addAll(int index, Collection<? extends E> c):将集合中的所有元素插入到列表中的指定位置,其他元素向后移动。

与add方法相比,这些方法更加灵活,并且可以为任何类型的列表添加任何类型的元素。

以下是一个使用List接口的addAll方法示例:

import java.util.LinkedList;

import java.util.List;

public class LinkedListDemo {

public static void main(String[] args) {

LinkedList<String> list = new LinkedList<>();

List<String> arrayList = new ArrayList<>();

arrayList.add("D");

arrayList.add("E");

arrayList.add("F");

list.addAll(arrayList);

System.out.println("LinkedList elements:");

for (String s : list) {

System.out.println(s);

}

}

}

在上面的示例代码中,我们创建了一个ArrayList对象,其中包含三个字符串"D","E"和"F"。然后,我们使用List接口的addAll方法将这些元素添加到LinkedList对象中。最后,我们使用for-each循环遍历整个链表并输出每个元素的值。

输出结果如下:

LinkedList elements:

D

E

F

可以看到,链表中的所有元素都被正确地输出了。

总结

通过本文,我们了解了如何向LinkedList添加元素,包括使用LinkedList的add方法、addLast方法和addFirst方法,以及如何将自定义对象添加到一个LinkedList对象中。我们还了解了List接口中添加元素的方法的使用。

LinkedList是一个非常有用的Java类,特别是在需要频繁添加和删除元素的情况下。如果您需要处理大量的数据,那么LinkedList的性能将比ArrayList更好。

后端开发标签