簡體   English   中英

如何在Java中的文本文件中迭代鏈接的哈希集並比較每個2個元素?

[英]How to iterate a linked hashset and compare each 2 elements in a text file in java?

我在鏈接的哈希集中有一些元素。
鉛筆,鋼筆,橡皮擦,規模
首先,我要訪問(鉛筆,筆)並執行一些操作。 然后我要訪問(鉛筆,橡皮擦)然后(鉛筆,刻度),依此類推。
我編寫了可以訪問第一個兩項的代碼,但是在下一次迭代中,它訪問的是橡皮,刻度而不是鉛筆,橡皮擦。 請幫助我找出此解決方案。 謝謝。 這是到目前為止我所做的代碼的一部分:

    LinkedHashSet<String> freq = new LinkedHashSet<String>();  
    /* Linked hashset has these items :  
    [pen,pencil,eraser,scale] */  
    String item;  
    String item2;  
    Iterator<String> itr = freq.iterator();  
    while (itr.hasNext()) {  
        item = itr.next();  
        System.out.println(item);  
        item2=itr.next();  
        System.out.println(item2);
        // perform some task  
    }

我不知道我是否了解你想要的,但是想要的循環必須使用嵌套循環來完成,請考慮以下代碼:

public static void main(String[] args) {
    LinkedHashSet<String> freq = new LinkedHashSet<String>();
    freq.add("pen");
    freq.add("pencil");
    freq.add("eraser");
    freq.add("scale");

    for (String item : freq) {
        performeOperation(item, freq);
    }
}

private static void performeOperation(String primeItem, LinkedHashSet<String> freq) {
    for (String secondItem : freq) {
        if (primeItem != secondItem) {
            System.out.println(primeItem + ", " + secondItem);
        }
    }
}

輸出樣本:

pen, pencil
pen, eraser
pen, scale
pencil, pen
pencil, eraser
pencil, scale
eraser, pen
eraser, pencil
eraser, scale
scale, pen
scale, pencil
scale, eraser

如果不需要重復的對,請使用以下命令:

public static void main(String[] args) {
    LinkedHashSet<String> freq = new LinkedHashSet<String>();
    LinkedHashSet<String> param = new LinkedHashSet<String>();
    freq.add("pen");
    freq.add("pencil");
    freq.add("eraser");
    freq.add("scale");
    param.addAll(freq);

    for (String item : freq) {
        param.remove(item);
        performeOperation(item, param);
    }
}

private static void performeOperation(String primeItem, LinkedHashSet<String> param) {
    for (String secondItem : param) {
        System.out.println(primeItem + ", " + secondItem);
    }
}

輸出樣本:

pen, pencil
pen, eraser
pen, scale
pencil, eraser
pencil, scale
eraser, scale

是的,可以使用一個LinkedHashSet來完成,但是您必須使用LinkedHashSet來維護元素的插入順序,這樣該解決方案才能起作用。

public static void main(String[] args) {
    LinkedHashSet<String> freq = new LinkedHashSet<String>();
    freq.add("pen");
    freq.add("pencil");
    freq.add("eraser");
    freq.add("scale");

    for (String item : freq) {
        performeOperation(item, freq);
    }
}

private static void performeOperation(String primeItem, LinkedHashSet<String> param) {
    boolean flag = false;
    for (String secondItem : param) {
        if (flag) {
            System.out.println(primeItem + ", " + secondItem);
        } else if (primeItem.equals(secondItem)) {
            flag = true;
        }
    }
}

碼:

    Iterator<String> iterator = set.iterator();
    String pencil = iterator.next();
    while (iterator.hasNext()) {
        System.out.println(pencil);
        System.out.println(iterator.next());
    }

輸出:

pencil
pen
pencil
eraser
pencil
scale

不確定如何使用Java中的ArrayLists進行操作,但是您可以將其從arraylist轉換為hashmap,因為您可以使用該方法對出現的次數進行計數。 這就是我會做的。

import java.util.ArrayList;
    import java.util.List;
    import java.util.HashMap; 
    import java.util.Map; 
    import java.util.Map.Entry; 
    import java.util.*; 

    public class Sample
    {

         public static void main(String []args){
            ArrayList<String> arrayList = new ArrayList<>();
            arrayList.add("Pencil");
            arrayList.add("Pencil");
            arrayList.add("Bulb");
            arrayList.add("Scale");
            arrayList.add("Pencil");
            arrayList.add("Pencil");
            arrayList.add("Scale");
            arrayList.add("Eraser");

            countListItems(arrayList);

         }

        public static void countListItems(ArrayList<String> list) 
        { 
            Map<String, Integer> map = new HashMap<String, Integer>(); 

            for (String x : list) 
            { 
                Integer y = map.get(x); 
                map.put(x, (y == null) ? 1 : y + 1); 
            } 

            for (Entry<String, Integer> item : map.entrySet()) { 
                System.out.println(item.getKey()+" -> count="+ item.getValue()); 
            }
        } 
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM