在JAVA中如何从集合中提取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JAVA中如何从集合中提取数据相关的知识,希望对你有一定的参考价值。

List<CZ_TASKVALUE> configs = cztaskvalueService.query(task, "");

if(configs==null || configs.size()==0)
jsonString = "success:false,msg:'无数据'";
out.write(jsonString);
logger.info(jsonString);
out.flush();
out.close();
return null;


jsonString = "success:true,taskid:'"+taskid+"',data:[";//"]";

int i=0;
for(CZ_TASKVALUE r:configs)
if(i!=0) jsonString += ",";
i++;
String t = "lng:'"+r.getLng()+"',lat:'"+r.getLat()+"',testvalue:'"+r.getTestvalue()+"',createtime:'"+r.getCreatetime()+"'";
jsonString += t;

jsonString += "]";
out.write(jsonString);
//logger.info(jsonString);
out.flush();
out.close();
return null;

用for循环遍历出来

参考技术A 一般集合类都提供有提取数据的方法(例如:getXXX(int index),getXXX(Object key)) 。本回答被提问者采纳 参考技术B 方法很多的 可以通过循环语句提取 也可以通过索引提取 参考技术C for each方法或者迭代

如何从 Java 中的 avro 文件中提取模式

【中文标题】如何从 Java 中的 avro 文件中提取模式【英文标题】:How to extract schema from an avro file in Java 【发布时间】:2018-01-11 19:13:36 【问题描述】:

如何从 Java 中的 avro 文件中先提取模式,然后再提取数据?与this 问题相同,但在 java 中除外。

我已经看到了如何从 avsc 文件而不是 avro 文件获取架构的示例。我应该往哪个方向看?

Schema schema = new Schema.Parser().parse(
    new File("/home/Hadoop/Avro/schema/emp.avsc")
);

【问题讨论】:

【参考方案1】:

您可以使用此处显示的数据块库https://github.com/databricks/spark-avro,它将 avro 文件加载到Dataframe (Dataset&lt;Row&gt;)

一旦有了Dataset&lt;Row&gt;,就可以直接使用df.schema()获取架构

【讨论】:

抱歉,我刚刚意识到您并没有真正开始使用 Spark。如果您还没有使用 Spark,那么我的解决方案是麻烦多于其价值。不过,我会留下答案,以防来自 Spark 视角的人有同样的问题 我没有使用 Spark。只是普通的香草 avro 工具罐,但谢谢。【参考方案2】:

如果您想知道 Avro 文件的架构而不需要生成相应的类或关心文件属于哪个类,可以使用GenericDatumReader

DatumReader<GenericRecord> datumReader = new GenericDatumReader<>();
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(new File("file.avro"), datumReader);
Schema schema = dataFileReader.getSchema();
System.out.println(schema);

然后就可以读取文件里面的数据了:

GenericRecord record = null;
while (dataFileReader.hasNext()) 
    record = dataFileReader.next(record);
    System.out.println(record);

【讨论】:

对于那些使用 C# Avro Apache 库的人,可以使用实用函数 DataFileReader&lt;GenericRecord&gt;.OpenReader(filename); 来实例化 dataFileReader。实例化后,dataFileReader 就像在 Java 中一样使用。 我正在尝试从字节数组而不是文件(同时包含模式和有效负载)中读取模式和数据。我该怎么做?【参考方案3】:

感谢@Helder Pereira 的回答。作为补充,模式也可以从GenericRecord 实例的getSchema() 中获取。Here 是关于它的现场演示,上面的链接显示了如何在 java 中为Parquet 获取数据和模式, ORCAVRO 数据格式。

【讨论】:

以上是关于在JAVA中如何从集合中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

C# 中如何从List集合中提取第一个值

通过 JAVA 从 MongoDB“NYC 餐厅”集合中提取地理键字段

如何使用 jQuery 从多个集合选择中提取 id?

如何根据从 objectId 中提取的创建日期对 MongoDB 集合进行分组?

如何根据从 objectId 中提取的创建日期对 MongoDB 集合进行分组?

怎么将list集合中的数据加载到Map中