java - 访问类的字段和方法以检索具有某些值的字段

标签 java

我正在尝试访问一个包含 ID、名称、文本和单词列表的文档类。我尝试将我拥有的文档 ID 与 ID 进行比较,找到后获取附加到该 ID 的单词列表,以找到确切的单词并返回其频率。 非常感谢任何帮助。

public class Doc {
    private int documentID;
    private static Doc docInstance = null;
    private String documentText;
    private ArrayList<String> listOfTokens;
    static int docCount = 0;
    int tokFreq = 0;

    public Doc() {
        documentID = 0;
        listOfTokens = new ArrayList<String>();
        tokFreq = 0;
        docCount++;
    }

    public static Doc getDocInstance() { 
        if (docInstance == null) {
            docInstance = new Doc();
        }
        return docInstance;
    }

    public ArrayList<String> getListOfTokens() { 
        return listOfTokens;
    }

    public void setDocumentID(int x){ 
        if (getDocumentID() != x)
           this.documentID = x;
    }
}

我正在尝试这个

public static void createDocumentVector(TreeMap<Integer,Integer> 
documentVector, TreeMap<String, ArrayList<Integer>>qm, int N) 
{
    int eachDoc = 0;

    Collection<String> allKeys = qm.keySet();
    ArrayList<Integer> l1 = new ArrayList<Integer>();
    boolean addedTerm = false;

    /**
    Obtain an Iterator for Collection
    */
    Iterator<String> itr = allKeys.iterator();
    String key;
    int termFrequency = 0;
    int documentFrequency = 0;

    /**
     Iterate through TreeMap values iterator
     */
    while(itr.hasNext()) 
    {
        key = (String)itr.next();
        Integer LL = 0;
        l1 = qm.get(key); // Returns value of that key
        for (int k = 0; k < l1.size(); k++) 
        {
            LL = l1.get(k);
            Doc doc = new Doc();
            doc.getDocInstance().setDocumentID(LL);
            int size = doc.getListOfTokens().size();
            String[] docIdTokens =  doc.getListOfTokens().toArray(new String[size]);
            for (String s : docIdTokens){
              if(s.equalsIgnoreCase(key)){
                 termFrequency++;
              }
            }

            documentFrequency = l1.size();
            eachDoc = getTFIDF(termFrequency, documentFrequency, N);
            documentVector.put(eachDoc, LL);
        }


    }
}

它没有完全运行并在调试时给出找不到源的信息。 我正在考虑将 Doc 类更改为:

public class Doc<ListOfTokens> {

private static int documentID;
private static Doc docInstance = null;
private String documentName;
private String documentText;
private HashMap<String, Integer> ListOfTokens = new HashMap<String, Integer>();
private TreeMap<Integer, ListOfTokens> documentMap = new TreeMap<Integer, ListOfTokens>();
int tokFreq = 0;
static int docCount = 0;
-----
}

但我认为这会有点复杂。所以任何建议都会有很大的帮助。

最佳答案

您不需要对 Doc 类的 documentID 属性使用关键字 static。由于您预计会有多个 doc 对象,并且每个对象都需要有自己的 documentID 值,因此您需要使用 documentID 作为非静态字段。

关于java - 访问类的字段和方法以检索具有某些值的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38257099/

相关文章:

java - 检查 int 是否为素数 Java

java - JMS 主题发布/订阅者

java - 如何在 RxJava 中获得多个响应?

java - 3DES 程序从 C# 转换为 Java 后的不同结果

java - Jsoup找不到html元素时抛出异常

java - 在 >=23 中膨胀类 Seekbar 时出错

java - 将 json 发送到 Restful Web 服务 java 时出现 500(内部服务器错误)

java - 包中的基类和派生类

java - 如何根据 boolean 值列过滤 JTable 中的行?

java - 如何使库在 java 中可替换?