我正在尝试从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();
}
}
}
如何更改打印才能执行此操作?
答案 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()