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

读取文件,然后创建私有类的对象

巫马正卿
2023-03-14

我在公共类singlyLinkedList中有私有类节点,我想从另一个公共类移动列表(作为临时),所以我如何创建临时节点或(方法)来移动列表。我不能将类节点更改为public,而应该保持为private。编程的思路是:在TextAnalyzer类中读取文件中的数据,然后将其插入到SinglyLinkedList中,并计算单词的出现频率。类singlyLinkedList

   public class SinglyLinkedList<T> {
   private static class Node<T> {
   public T data;
    Node<T> next;
    public Node(T data) {
        this.data = data;
        next = null;
    }
}
Node<T> head;
Node<T> tail;
int size;

public SinglyLinkedList() {
    head = null;
    tail = null;
    size = 0;
}

public void insert(T S) {
    Node<T> temp = new Node<T>(S);
    if (head == null) {
        head = tail = temp;
        size++;
        return;
    }

    temp.next = head;
    head = temp;
    size++;
    return;
}

public void display() {
    Node<T> tmp = head;
    while (tmp != null) {
        System.out.println(tmp.data.toString());
        tmp = tmp.next;

    }

类TextAnalyzer

  SinglyLinkedList<WData> list = new SinglyLinkedList<WData>();
   private static class WData {

    String word;
    int freq;

    public WData(String w, int f) {
        word = w;
        freq = f;
    }

    // .. Add other methods here as needed
    @Override
    public String toString() {
        // if(list.)
        return "WData{" + "word=" + word + " , freq=" + freq + '}';
    }
}
  public Scanner sc;

public void processText(String filename) {

    try {
        sc = new Scanner(new File(filename));
        while (sc.hasNext()) {
            String line = sc.next();
            String[] st = line.split(" ");

            for (int i = 0; i < st.length; i++) {

                processWord(st[i]);
        }}
    list.display();
       } catch (FileNotFoundException ex) {
        System.out.println("error in loadstudends Scanner");
    }
}
 public void processWord(String word) {
         Node<WData> temp = list.head;

    while (temp != null) {
        if (temp.data.word.equalsIgnoreCase(word)) {
            break;
        }
        temp = temp.next;
    }
    if (temp == null || Dtemp.data.word.matches(".*\\d.*")) {

        list.insert(new WData(word, 1));

    } else {
        temp.data.freq += 1;
    }
    }}

共有1个答案

华展鹏
2023-03-14

您可能要执行以下1。在SinglyLinkedList中创建自己的迭代器实现

public class MyIterator implements Iterator<T> {
    private Node<T> next = head;
    private Node<T> current = null;
    @Override
    public boolean hasNext() {
      return next != null;
    }
    @Override
    public T next() {
      if (hasNext()) {
        current = next;
        next = current.next;
        return current.data;
      }
      throw new NoSuchElementException();
    }

    @Override
    public void remove() {
      //TODO
    }
  }
public class SinglyLinkedList<T> implements Iterable<T> {
  @Override
  public Iterator<T> iterator() {
    return new MyIterator();
  }
 类似资料:
  • 一切工作只是试图消除一个步骤,我有2个批处理文件 1)读取csv文件,创建表格并保存为压缩文件 如果存在表,则删除表1;创建表2(col1VARCHAR(10)Not NULL, col2VARCHAR(10)NULL)作为SELECT*from CSVREAD('Table1.csv'); 脚本到'MyDB.sql'压缩放气; 2)从第一个batfile获取压缩文件并创建DB文件 java.ex

  • 问题内容: 我需要一些帮助:我正在用Java进行超市仿真,但是有一个问题,我有一个文本文件(Stock.txt),例如,我在上面有所有的超市库存: 0-面包巧克力蛋糕-$ 12.5-250 1-Meat-Premium Steak- $ 2.6-120 2海鲜金枪鱼-1.2-14美元 … 第一个数字是产品的“ id”,第二个是产品所属的部门,第三个是产品名称,第二个是价格,最后一个数字是库存的产品

  • 问题内容: 我不知道这是否可能,但是可以。使用回调使工作变得更加困难。 我有一个包含html文件的目录,我想使用node.js和socket.io将它们以对象块的形式发送回客户端。 我所有的文件都在/ tmpl中 因此,套接字需要读取/ tmpl中的所有文件。 对于每个文件,必须将数据存储在对象中,文件名作为键,内容作为值。 最后的回调也是错误的。目录中的所有文件完成后,必须调用它。 但是我不知道

  • 我需要一些帮助:我正在做一个在Java的飞行花名册模拟。名册将容纳25名乘客,其中22名来自文本文件(passengerlist.txt)。对于每个乘客,有3个必需的数据点;姓名、座位等级和座位号和2个可选数据点数常旅客号码和常旅客点数。每个乘客都在自己的线路上,每个数据点都用逗号隔开。例如: 我有这个类,到目前为止还有构造函数: 我需要做的是从文本文件中读取每一行并创建数组,即使第一个look行

  • 问题内容: 无论如何,我可以写到tempfile并将其包含在命令中,然后关闭/删除它。我想执行命令,例如:some_command / tmp / some-temp-file。 提前谢谢了。 问题答案: 如果需要带有名称的临时文件,则必须使用该功能。然后就可以使用了。有关详细信息,请阅读 http://docs.python.org/library/tempfile.html。

  • 我编写了一个类,它读取整个文件并返回内容。