Java Vector多对象元素操作:如何按指定对象值筛选?
如何筛选Java Vector中price>100的复合元素?
完全可行!先给你理清楚思路:你说的每个包含object1、object2和price的元素,本质上应该是一个自定义的Java类(比如咱们叫它Item)——就像数据库里的一条记录,而类里的这三个项就是记录的“字段”。
第一步:先定义你的复合元素类
首先得把这个包含三个对象的元素类写好,关键是要给price加一个getter方法,这样才能从每个元素里取出价格做判断:
public class Item { // 这里可以换成具体的类型,比如String、Integer,不用Object private Object object1; private Object object2; private double price; // 假设price是数值类型,比如double或Integer // 构造方法,用来创建Item对象 public Item(Object object1, Object object2, double price) { this.object1 = object1; this.object2 = object2; this.price = price; } // 必须的:获取price的方法 public double getPrice() { return price; } // 可选:重写toString,方便打印元素的具体内容 @Override public String toString() { return "Item{" + "object1=" + object1 + ", object2=" + object2 + ", price=" + price + '}'; } }
第二步:筛选并打印符合条件的元素
这里给你两种常用的实现方式:
方式1:传统循环遍历(兼容Java 8之前的版本)
直接遍历Vector里的每个Item对象,取出价格判断后打印:
import java.util.Vector; public class VectorFilterDemo { public static void main(String[] args) { // 初始化Vector,添加几个测试元素 Vector<Item> itemVector = new Vector<>(); itemVector.add(new Item("商品A", "类别X", 80.0)); itemVector.add(new Item("商品B", "类别Y", 120.0)); itemVector.add(new Item("商品C", "类别Z", 150.0)); // 筛选price>100的元素 for (Item item : itemVector) { if (item.getPrice() > 100) { System.out.println(item); } } } }
方式2:Java 8+ Stream API(更简洁)
如果你的项目用Java 8及以上,用Stream可以写出更清爽的代码:
import java.util.Vector; public class VectorStreamFilterDemo { public static void main(String[] args) { Vector<Item> itemVector = new Vector<>(); itemVector.add(new Item("商品A", "类别X", 80.0)); itemVector.add(new Item("商品B", "类别Y", 120.0)); itemVector.add(new Item("商品C", "类别Z", 150.0)); // 用Stream过滤并打印 itemVector.stream() .filter(item -> item.getPrice() > 100) .forEach(System.out::println); } }
关于你的附带问题
这种复合元素里的各个项,在Java里叫做类的属性(Attribute)或者成员变量(Member Variable),对应数据库里的字段(Field/Column)——和你说的数据库记录的组成部分完全对应,每个属性就像表的一列,每个Item对象就像表中的一条记录。
内容的提问来源于stack exchange,提问作者Ohto Nordberg
相关产品推荐
相关产品推荐

