簡體   English   中英

如何從鏈接列表中打印特定元素

[英]How to print a particular element from a linked list

我正在嘗試從LinkedList存儲的信息中打印IP地址,但是由於IP地址和PC1存儲在一起,因此在執行該操作時有些困惑。 IP地址和PC1存儲在一起。

PlsWork

import java.net.InetAddress;

public class PlsWork {

    private InetAddress IP;
    private String PC;

    public PlsWork(InetAddress IP, String PC){
        this.IP=IP;
        this.PC=PC;
    }

    public InetAddress getIP(){
        return IP;
    }

    public String getPC(){
        return PC;
    }

    @Override
    public String toString() {
        return IP + " " + PC;
    }
}

WorkPls

import java.util.LinkedList;

public class workPls {
    private LinkedList  List= new LinkedList();

    public void addNode(PlsWork st){
        List.add(st);
    }

    public LinkedList getList(){
        return List;
    } 

    public void print(){
        System.out.println(List);
    }

}

主班:

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Linked {

    public static void main(String[] args) {
        workPls oks = new workPls();
        try {
            DatagramSocket socket = new DatagramSocket(Integer.parseInt( args[0]));
            socket.setSoTimeout(0);
            while(true) {
                byte []buffer = new byte[1024];
                DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
                socket.receive(packet);
                PlsWork  ok = new PlsWork(packet.getAddress(),"pc1");
                oks.addNode(ok);
                oks.print();
            }
        }
        catch (Exception error){
            error.printStackTrace();
        } 
    }
}

如何更改打印件才能做到這一點?

當您調用System.out.println() ,它將原子調用toString ,因此您可以覆蓋toString以使其僅返回IP:

@Override
public String toString() {
    return IP;
}

PS:

這是使類名以大寫字母開頭的一種好方法,您可以使用workPls替換WorkPls

無需依賴LinkedList.toString()為您打印列表(這將依次對列表中的每個項目調用PlsWork.toString() ),您可以手動遍歷列表並根據需要打印每個項目。 例如:

public void print() {
    StringBuilder b = new StringBuilder();
    for(PlsWork w : List) {
        if(b.length>0) {
            //add a comma between entries, but not before the first (i.e. only if builder is empty)
            b.append(", ");
        }
        b.append(w.getIP());
    }
    //following adds curly braces front and end, if desired
    b.append('}');
    b.insert(0, '}');

    //finally print to sysout
    System.out.println(b.toString());
}

上面將打印類似:

{1.1.1.1, 2.2.2.2, 3.3.3.3}

(假設3個不同的條目具有這些IP地址)

如果要在打印鏈接列表時僅顯示其鏈接列表中包含的項目的IP,請更改workPls類的方法打印的正文以顯示每個項目IP。

public void print(){
    String output = "{";
    for(PlsWork item : List) {
        output += item.getIP().toString();
        output += ", ";
    }
    output += "}";
    System.out.println(output);
}

暫無
暫無

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

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