从ArrayList中的每个项目的方法获取值作为数组

时间:2018-04-25 11:18:17

标签: java

我有一个ArrayList<ROI2D>,ROI2D包含一个返回字符串的getName();方法。

我现在希望这些名称显示在JComboBox中,以便用户可以根据名称选择ROI2D。

使用ArrayList.toArray();将获得ROI2D的Array [x],但是我可以以某种方式对其执行.getName();并将其传递给JComboBox吗?或者是创建包含名称的单独数组的唯一方法,然后使用比较来查看用户选择的ROI2D?

2 个答案:

答案 0 :(得分:2)

如果您使用的是Java 8,则可以使用Streams API。

List<String> stringList = 
             roid2dList.stream().map(n -> n.getName).collect(Collectors.toList());

String[] stringArray = new String[stringList.size()];
stringArray = stringList.toArray(stringArray);

在此处查看更多示例: https://www.mkyong.com/java8/java-8-streams-map-examples/

答案 1 :(得分:1)

所以你真正需要做的是简单地覆盖// Form submission handler onSubmit = async ({ username, password }) => { this.setState({loading: true}) this.props.authenticate(username, password) .then(res => { this.setState({loading: false}) this.props.updateLoggedInStatus(true) }) .catch(err => { this.setState({loading: false, errorMessage: err.message}) console.log('err', err) }) } 方法只返回名称。我做了一个简单的例子来展示它:

主要方法:

toString()

public static void main(String[] args) { JFrame f = new JFrame(); List<Client> cs = new ArrayList(); cs.add(new Client("Hans", 1)); cs.add(new Client("Peter", 2)); JComboBox c = new JComboBox<Client>(cs.toArray(new Client[] {})); c.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { System.out.println(((Client) e.getItem()).getAge()); } }); f.add(c); f.pack(); f.setVisible(true); } 类:

Client

这很有效。 public class Client { String name; int age; public Client(String n, int age) { name = n; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return getName(); } } 中的每个条目仅显示名称