如何从链表中打印特定元素

时间:2018-04-09 13:03:31

标签: java

我正在尝试从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();
        } 
    }
}

如何更改打印才能执行此操作?

3 个答案:

答案 0 :(得分:0)

当您致电System.out.println()时,它会自动拨打toString,因此您可以覆盖toString以使其仅返回IP:

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

PS:

这是一个很好的名称方式,使类名以大写字母开头,您可以使用workPls重新WorkPls

答案 1 :(得分:0)

您可以手动遍历列表并根据需要打印每个项目,而不是依靠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地址)

答案 2 :(得分:0)

如果要在打印时仅显示linkedList中包含的项目的IP,请更改workPls类的方法打印的正文以显示每个项目IP。

FIND_IN_SET()