Java集合列表: Converting from List '<Column <String1, String2>>' to 'List <String1>'

标签 java arrays list collections jakarta-ee

我有一个返回这样的列表的函数:-

List <Column <String1, String2>>

接下来我想将此列表传递给第二个函数,但是 第二个函数只需要一个列表,其中仅包含上述列表的列的第一部分(字符串1)。

所以我想将此列表传递给第二个函数:-

List <String1>

我的用例:这两个函数都来 self 用来访问 Web 应用程序的数据库(Cassandra)的库。第一个函数为我提供了所有列的列表,其中包含名称(String1)和值(String2)两部分。因此,第一个函数为我提供了所有列的列表(每个列都有两个字符串),然后我只需使用列名称列表将其提供给第二个函数,该函数将在数据库中查询这些列。

由于在从数据库请求单个页面的数据之前,我需要执行这项工作至少 2-3 次,因此我需要一种超快速且相当有效的方法来执行此操作。

最佳答案

这取决于“高效”的含义(内存、执行时间,还是其他什么?)以及第二个函数正在做什么。

如果您关心速度,并且第二个函数将重复查看列表中的项目,那么您可能应该将字符串复制到新的 List<String> 中。 :

List<String> strings = new ArrayList<String>(input.size());
for (Column<String, String> column : input) {
    strings.add(column.name());
}
return strings;
另一方面,如果第二个函数仅查看项目的一小部分,或者如果您更关心内存而不是速度,那么您可能需要一个惰性 View 来在访问项目时对其进行转换。 Lists.transform Google Guava 可以为您做到这一点:

return Lists.transform(input, new Function<Column<String, String>, String>() {
    public String apply(Column<String, String> column) {
        return column.name();
    }
};

请注意,您可能希望将 Function 创建为单独的静态类,除非您同意它保留对封闭实例的引用。为了简洁/清晰起见,我在这里使用了一个匿名类。

关于Java集合列表: Converting from List '<Column <String1, String2>>' to 'List <String1>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049400/

相关文章:

java - 在 OSGi 中运行 JAI

java - 无法部署 WAR : ClassNotFoundException - What am I still missing?

sql - 如何查询 Postgres 中的数组存储列,(数组交集)

python - 生成元组列表并使用它

java - 为没有 equals() 的对象创建一个 hashmap 或 set

c - 如何复制 argv[1]

c# - 在 C# 中将字符串数组编码为 char **

python - 为每个唯一值创建列表

list - Prolog-仅从列表中获取相同的元素

java - Java 中 printStackTrace() 方法的用途是什么?