java - 访问 Set Java 中的数据

标签 java set hashset treeset

我正在通过扫描仪访问 .txt 文件中的数据,该 .txt 文件如下所示:

001 City     5000.00 101
002 Capital  4000.00 101
003 Farm     1000.00 102

我需要像这样重新格式化:

Capital
City
Farm

101 9000.00
102 1000.00

我的代码到目前为止:

try{
      Scanner scan = new Scanner(new File("C:\\Users\\Dustin\\Desktop\\test.txt"));
      String[] strArray = new String[3];
      TreeSet<String> ts = new TreeSet<String>(); 
      while(scan.hasNextLine()){
          ts.add(scan.nextLine());
          //strArray[0] = scan.nextLine();
          //StringTokenizer stkn = new StringTokenizer(strArray[0],",");
          //System.out.println(stkn.nextElement());
          //System.out.println(strArray[0]);
      }
      for(String s : ts){
      System.out.println(s);
      }catch(Exception e){
       System.out.println("Error: "+e.getMessage());
}

但我不知道如何访问此数据的各个项目并添加到集合中,然后将这 101 个项目添加在一起。我对此很陌生,任何帮助将不胜感激。

最佳答案

您可以尝试执行以下操作:

从文本文件中读取数据并使用 .split(String regex) 对其进行分割方法:

try{
      Scanner scan = new Scanner(new File("C:\\Users\\Dustin\\Desktop\\test.txt"));
      TreeSet<String> ts = new TreeSet<String>();
      while(scan.hasNextLine()){
          String[] strArray = scan.nextLine().split("\\s+");    //the will yield an array having {"001", "City", "5000.00", "101"}

由于您想按 ID 分组,因此可以查看 HashMap 并添加这一行:Map<String, Double> map = new HashMap<String, Double>();

TreeSet<String> ts = new TreeSet<String>();
Map<String, Double> map = new HashMap<String, Double>()

当您从文件中读取数据时,您将检查是否已经读取了具有相同 ID 的值:

if(map.containsKey(strArray[3]))
{
    map.put(strArray[3], map.get(strArray[3]) + Double.parseDouble(strArray[2].trim()));
}
else
{
    map.put(strArray[3], Double.parseDouble(strArray[2].trim());
}

并将数据添加到您的集合中:

ts.add(strArray[1]);

准备好后,您将需要迭代该集合,然后打印其内容。完成后,您将需要迭代 map 并打印键值对。

话虽这么说,由于这两种数据结构都不适合排序,为了清楚起见,我建议您包含放入树集中的值的 ID:

ts.add(strArray[1] + "(" + strArray[4] + ")");

关于java - 访问 Set Java 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190792/

相关文章:

java - 使用 jsoup 提取 https url

java - 如何找到用户输入数字字符串的所有奇数位的总和?

python - 检查字典 : exceptions or set? 中的成员资格

c++ - 如何正确初始化 std::set<std::string>?

Java 哈希集和树集

java - Android:按下弹出菜单项时的背景颜色

java - 基于 ArrayList 的二叉树 - Java

python - 如何删除使用 Python 中的 Mechanize 生成的链接中的重复项?

java - 空指针异常 : null error

java - 为什么 HashSet 保持自然/字母顺序?