我需要在数组中存储一些数据对。可能几十个。我只需要追加,不需要删除,不需要搜索。然后我将按索引访问。每对是字符串值和整数值。Java 提供了很多方法来做到这一点,这是这样的常见做法吗?两个数组?数组中的类?
我知道如何在 JavaScript 中做到这一点:
var data = []
data.push(['Some name', 100])
//somewhere else
data.push(['Other name', 200])
但我需要 Java 的解决方案
谢谢你。
我需要在数组中存储一些数据对。可能几十个。我只需要追加,不需要删除,不需要搜索。然后我将按索引访问。每对是字符串值和整数值。Java 提供了很多方法来做到这一点,这是这样的常见做法吗?两个数组?数组中的类?
我知道如何在 JavaScript 中做到这一点:
var data = []
data.push(['Some name', 100])
//somewhere else
data.push(['Other name', 200])
但我需要 Java 的解决方案
谢谢你。
例如,您可以创建 Pair 类(或使用 apache commons 的实现)来将两个元素存储在 List 中。
List<Pair<String, Integer>> l = new ArrayList<>();
l.add(new Pair<String, Integer>("Some name", 100));
请参阅泛型对类和Java Pair<T,N> 类实现以了解如何实现 Pair 类。
这真的取决于,但总的来说,我认为创建一个对象并使用它的列表会更好:
public class MyObject {
private String myString;
private Integer myInt;
// getters setters
}
并使用:
List<MyObject> = new ArrayList<>();
(您也可以使用Pair代替)
如果字符串(或整数)是唯一的,则可以使用 Map,但获取插入索引比较困难。
另一种选择是只有两个列表,一个用于字符串,一个用于整数,并在两个列表中使用相同的索引。
我按照上面的建议使用 POJO,因为这有助于为 POJO 的所有属性定义 getter 和 setter,通过覆盖 equals 和 hashCode 方法来比较对象。通过使用 getter 和 setter,您可以了解存储在哪个字段中的内容,并且比较可以根据您的要求为您提供对象排序。因此,这种方法对于适应新的需求来说也更加简洁和可扩展。此外,当您使用顺序键放置数据时,Pojo 的每个实例都可以放入 List 中(如果需要按排序顺序。