当前位置: 首页 > 知识库问答 >
问题:

如何使用Java显示存储在数组列表中的特定值

辛承志
2023-03-14

我的文本文件如下所示

 STID  STNM  TIME     TMAX TMAXO     TMIN TMINO    TAVG     TBAD     DMAX DMAXO     DMIN DMINO    DAVG    VDEF     DBAD     SMAX SMAXO     SMIN SMINO    SAVG     SBAD     BMAX BMAXO     BMIN BMINO    BAVG     BBAD     S5MX S5MXO     S5MN S5MNO    S5AV     S5BD     S25X S25XO     S25N S25NO   S25AV    S25BD     S60X S60XO     S60N S60NO   S60AV    S60BD     HMAX HMAXO     HMIN HMINO    HAVG     HBAD     PMAX PMAXO     PMIN PMINO    PAVG    MSLP     PBAD     AMAX AMAXO     ATOT     ABAD     PDIR     PDFQ     SDIR     SDFQ     IBAD     WSMX WSMXO     WSMN WSMNO    WSPD    WDEV    WMAX WMAXO     WBAD     RAIN     RNUM    RMAX     RBAD    9AVG     9BAD     2MAX     2MIN     2AVG     2DEV     2BAD     HDEG     CDEG     HTMX HTMXO    HTBAD     WCMN WCMNO    WCBAD
 ACME   110     0    76.32   131    69.22   184   71.57        0    69.10   286    61.55     3   66.48    4.22        0    83.16     3    78.24   288   80.85        0    85.37     3    77.74   288   81.77        0    83.12   150    77.86   288   80.58        0    83.84     3    81.23   288   82.34        0    81.54     3    80.94   285   81.29        0    96.82   278    66.82     1   84.59        0    28.74   284    28.67    23   28.71   30.10        0   412.73   130     5.46        0     -996     -999     -996     -999       59    10.92   132     0.00    37    4.34    2.41   14.61   146        0     0.22       19    0.24        0   71.67        0     8.44     0.00     2.49     2.30        0     0.00     7.77     -996   999      288     -996   999      288
 ADAX     1     0    73.99    96    68.61    21   71.32        0    70.91   169    62.77     1   68.22    2.58        0    87.15     3    82.99   288   84.83        0    88.32     3    79.54   288   83.59        0    85.06     3    81.84   288   83.31        0    88.48     3    85.21   288   86.61        0     -996   999     -996   999    -996       96    98.40   274    73.27     1   90.20        0    29.08   137    29.01    17   29.04   30.08        0   210.42   151     5.23        0     -996     -999     -996     -999      139    12.83   106     0.00    33    3.65    3.03   19.28   121        0     0.24       23    0.24        0   71.57        0     8.84     0.00     2.07     2.48        0     0.00     6.30     -996   999      288     -996   999      288
 ALTU     2     0    75.51   107    68.74   168   71.63        0    70.43   279    64.56   125   67.48    3.50        0    80.60     3    77.88   288   78.91        0    79.11     3    75.96   288   77.08        0    79.97     3    77.23   288   78.41        0    81.95     3    79.57   288   80.55        0     -996   999     -996   999    -996       96    98.36   286    70.28   106   87.18        0    28.68   276    28.60    51   28.64   30.09        0   202.20   123     5.03        0        2    30.80        4    18.63       25    13.72   128     0.00    70    5.79    2.71   18.19   128        0     0.19       19    0.12        0   71.53        0     9.55     0.00     3.71     2.22        0     0.00     7.12     -996   999      288     -996   999      288

我使用下面的代码片段将文本逐行存储在数组列表中,并将整个文件显示为输出。

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Stack {

    public static void main(String[] args) throws IOException {


    // create token1
    String token1 = "";

    /

    // create Scanner inFile1
    Scanner inFile1 = new Scanner(new File("daily.txt")).useDelimiter(",\\s*");



    List<String> temps = new ArrayList<String>();

    // while loop
    while (inFile1.hasNext()) {
      // find next line
      token1 = inFile1.next();
      temps.add(token1);
    }
    inFile1.close();

    String[] tempsArray = temps.toArray(new String[0]);

    for (String s : tempsArray) {
      System.out.println(s);
    }
  }
}

但我只想显示三列TMAX,TMIN,DMAX。

共有2个答案

顾恺
2023-03-14

如果这些列通过一些(可能是嵌套的)业务规则(对象图)相互绑定并且在应用程序中很有用,那么您可以使用面向对象的方法,将每一行映射为对象,将列映射为不同的属性(包含子对象)。例如

public class Row {
    private String Stid;    // choose appropriate name and type for each
    private int STNM;
    ...
    //probably (TMAX, TMAXO, TMIN, TMINO) being closely related may go as 
    // contained object
    //  ...
    //appropriate object graph
}

这种方式将完整的数据映射到集合中的对象(可能是List),然后我们可以通过迭代、比较、排序等方式使用它。

如果这些字段对应用程序不是特殊的,而是作为字符串标记,那么正如已经建议的那样,二维列表是更好的选择。

如果它的唯一目的是过滤数据,那么在读取数据时,我们可以忽略不需要的列。

姜玉泽
2023-03-14

这看起来像是一个以制表符分隔的值文件——在制表符上拆分行如何?

// Make this a list of arrays of Strings
List<String[]> temps = new ArrayList<String[]>(); 

// while loop
while (inFile1.hasNext()) {
  // find next line
  token1 = inFile1.next();
  temps.add(token1.split('\t')); // split the line on tab characters
}
inFile1.close();
// this is not necessary for your implementation or mine
// String[] tempsArray = temps.toArray(new String[0]);

for (String[] s : temps) {
  // TMAX, TMIN, and DMAX are the 4th, 6th, and 10th items in each row respectively
  System.out.println(s[3] + " " + s[5] + " " + s[9]);
}

如果你想要更健壮的东西,你可以使用CSV/TSV阅读器和字典界面——这可以让你把每一行作为从[column name]到[column value in the row]的映射

 类似资料:
  • 我是新来的反应-本地人。所以,我有一个名为任务的自定义组件,我有一些数据存储在Asyncstore中。我已经检查了数据是否确实通过另一个组件/模态存储在Asyncstore中。但是当我试图从Asyncstore获取数据时(请参阅下面的代码),它不会显示任何内容。我的自定义组件显示数据很好,只是无法从Asyncstore获取/显示数据。我是不是做错了什么?请帮帮我。 函数的内部调用:

  • 问题内容: 我需要知道是否将数据存储在ArrayList中,并且需要获取存储在其中的值。 例如:如果我有这样的数组列表 我想获取每个String元素,该怎么办? 我尝试通过以下代码来做到这一点: 问题答案: 以下代码段提供了一个示例,展示了如何从指定索引处的元素中获取元素,以及如何使用高级的for-each循环遍历所有元素: 请注意以下几点: 使用泛型和类型代替原始类型。 变量名以小写字母开头 被

  • 我还是MySQL的新手,甚至比MySQLI更新。我试图用MySQLI更新我的网站,但我似乎无法解决最后一个问题。 我的网站是一个单页网站,页面上有50个类别。每个类别都有一个类别标题。我在数据库中有一个表,其中包含所有50个类别的标题和id。我使用MySQL/PHP在每个类别的顶部显示每个类别的标题,具体选择行和列。这是我的代码... 查询: 回声声明: 这允许我选择要显示的行和列。 我如何在My

  • 问题内容: 说我有一个对象列表,其中包含两个字段和,均为String类型。 如果有可能,如何在不迭代列表的情况下获取所有值的列表? 问题答案: 对象是对内存地址的引用。然后,该对象的字段是指向其他内存地址的其他引用。因此,对象列表是引用列表。因此,列表不可能直接访问对象字段(由引用给出的引用)。最简洁的答案是不。 注意:无论如何,您都会找到可以实现所需功能的API,但该API仍在内部循环。

  • 我是新手,请帮助解决这个问题,这里我需要使用jstl在jsp中显示数组列表中的数据。我创建了一个utill类,它从数据库中获取数据并在bean中设置值,我将该bean添加到arraylist中,就像 并将数组列表返回给Modelandview mylist方法,在该方法中将数组列表传递给jsp使用 在jsp中,我访问数组列表,如 (其中,assetnumber是我从bean获得的值)。我的问题是如

  • 我是Java的新学习者,目前很难理解库和main的概念。我试图将用户的输入存储在特定的库中,即Store,而不添加“静态”。我的逻辑错了吗?这是我的代码 这是我的库代码