Java中list判断是否存在值,如果不存在则插入,如果存在则return
时间: 2024-03-20 22:40:27 浏览: 13
可以使用contains()方法判断list中是否存在某个值,如果不存在则使用add()方法插入,如果存在则直接返回。
示例代码如下:
```java
List<String> list = new ArrayList<>();
String value = "abc";
if (!list.contains(value)) {
list.add(value);
} else {
return;
}
```
注意,这里的判断是基于值的比较,如果要比较对象是否相等,需要确保对象实现了equals()方法。
相关问题
java将两个同类型对象,插入一个list
示例代码:
假设类型为Person,已有两个Person对象p1和p2,需将它们插入一个List<Person>中。
1. 新建List对象:
List<Person> personList = new ArrayList<>(); // 创建空List
2. 插入p1和p2:
personList.add(p1); // 将p1插入List中
personList.add(p2); // 将p2插入List中
3. 完整代码:
public class Test {
public static void main(String[] args) {
Person p1 = new Person("Tom", 20); // 创建Person对象p1
Person p2 = new Person("Jerry", 18); // 创建Person对象p2
List<Person> personList = new ArrayList<>(); // 创建空List
personList.add(p1); // 将p1插入List中
personList.add(p2); // 将p2插入List中
System.out.println(personList); // 打印List中的元素
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name=" + name + ", age=" + age + "}";
}
}
执行结果:
[Person{name=Tom, age=20}, Person{name=Jerry, age=18}]
java在列表框中插入图片
Java 中的列表框(JList)不支持直接插入图片,但可以通过自定义渲染器(ListCellRenderer)来实现在列表框中显示图片。
下面是一个简单的示例代码,演示如何在列表框中显示图片:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
public class ImageListExample extends JFrame {
private JList<String> list;
public ImageListExample() {
String[] data = {"apple", "banana", "orange"};
BufferedImage[] images = {loadImage("apple.png"), loadImage("banana.png"), loadImage("orange.png")};
list = new JList<>(data);
list.setCellRenderer(new ImageListCellRenderer(images));
add(list);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private static BufferedImage loadImage(String filename) {
// 加载图片的代码
return null;
}
private static class ImageListCellRenderer extends JLabel implements ListCellRenderer<String> {
private BufferedImage[] images;
public ImageListCellRenderer(BufferedImage[] images) {
this.images = images;
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) {
setText(value);
setIcon(new ImageIcon(images[index]));
setBackground(isSelected ? Color.BLUE : Color.WHITE);
setForeground(isSelected ? Color.WHITE : Color.BLACK);
return this;
}
}
public static void main(String[] args) {
new ImageListExample();
}
}
```
以上示例代码中,我们首先定义了一个 `ImageListExample` 类,继承自 `JFrame` 类,用于显示一个列表框。在构造函数中,我们创建了一个包含三个元素的字符串数组 `data`,用于存储列表框中的数据。同时,我们还创建了一个包含三个元素的 `BufferedImage` 数组 `images`,用于存储每个元素对应的图片。
接着,我们创建了一个 `JList` 实例 `list`,并将 `data` 作为其构造函数的参数。我们通过调用 `list.setCellRenderer` 方法,设置了一个自定义的渲染器 `ImageListCellRenderer`。这个渲染器继承自 `JLabel` 类,并实现了 `ListCellRenderer` 接口。
在 `ImageListCellRenderer` 类中,我们定义了一个 `BufferedImage` 数组 `images`,用于存储每个元素对应的图片。在 `getListCellRendererComponent` 方法中,我们根据当前元素的索引,从 `images` 数组中取出对应的图片,并将其设置为标签的图标。此外,我们还设置了标签的背景色和前景色,以区分选中和未选中状态。
最后,我们在 `main` 方法中,创建了一个 `ImageListExample` 实例,用于显示列表框。你可以根据自己的需要修改示例代码中的图片路径和数据内容。