2013-03-06 54 views
1

我有一個套接字ArrayList。我如何從列表中刪除我在變量中的同一個套接字。例如:找到兼容套接字

sockets = new ArrayList<Socket>(); 
sockets.add(socket); 
sockets.add(socket1); 
sockets.add(socket2); 

現在我想刪除它的索引,未知的socket1。

+0

所以你在ArrayList中有一堆套接字,並且你有一個'Socket'變量,你不知道它是哪一個,但是你想刪除它? – rgettman 2013-03-06 20:29:00

+0

@rgettman是的。那我想做什麼 – Shelef 2013-03-06 20:34:13

回答

-1

雖然你不能完全提供您的代碼,但在這裏,我給你舉個例子,如何刪除從下面的數組列表中的項目..

// create an empty array list with an initial capacity 
    ArrayList<String> arrlist = new ArrayList<String>(5); 

    // use add() method to add values in the list 
    arrlist.add("A"); 
    arrlist.add("B"); 
    arrlist.add("C"); 
    arrlist.add("D"); 
    arrlist.add("E"); 

    System.out.println("Size of list: " + arrlist.size()); 

    // let us print all the values available in list 
    for (String value : arrlist) { 
     System.out.println("Value = " + value); 
    } 

    // Removes first occurrence of "C" 
    arrlist.remove("C"); 

    System.out.println("Now, Size of list: " + arrlist.size()); 

    // let us print all the values available in list 
    for (String value : arrlist) { 
     System.out.println("Value = " + value); 
    } 

//又如

ArrayList<String> arlist=new ArrayList<String>(); 

//<E> it is return type of ArrayList 

arlist.add("First Element"); // adding element in ArrayList 
arlist.add("Second Element"); 
arlist.add("Third Element"); 
arlist.add("forth Element"); 
arlist.add("fifth Element"); 

// remove array list element by index number 
arlist.remove(3); 

// remove ArrayList element by Object value 
arlist.remove("fifth Element"); 

// get elements of ArrayList 
for(int i=0;i<arlist.size();i++) 
{ 
    System.out.println("ArrayList Element "+i+" :"+arlist.get(i)); 
} 
+0

我知道我可以用remove來做,但是當我使用套接字時,它不起作用 – Shelef 2013-03-06 20:35:10

+0

sockets.remove()將作爲套接字是對象,你會嘗試嗎? – ridoy 2013-03-06 20:37:15

+0

@Shelef不工作如何?返回null?刪除錯誤的套接字? – EJP 2013-03-06 21:28:19

3

假設您有要刪除的Socket對象的引用,那麼只需撥打remove即可:ArrayList

sockets.remove(socket1); 

這是有效的,因爲即使Socket未實現equals方法,也會使用Object類的引用相等性。只要該Socket對象在ArrayList中,remove就會將其刪除。

1

此代碼:

import java.io.IOException; 
import java.net.Socket; 
import java.util.ArrayList; 
import java.util.List; 

public class RemoveSocketFromAList { 
    public static void main(String[] args) throws IOException { 
     List<Socket> sockets = new ArrayList<>(3); 
     Socket google = new Socket("www.google.com", 80); 
     Socket bing = new Socket("www.bing.com" , 80); 
     Socket yahoo = new Socket("www.yahoo.com" , 80); 
     sockets.add(google); 
     sockets.add(bing ); 
     sockets.add(yahoo ); 
     System.out.println(sockets.size()); 
     sockets.remove(bing); 
     System.out.println(sockets.size()); 
     System.out.println(sockets); 
    } 
} 

輸出:

3 
2 
[Socket[addr=www.google.com/74.125.230.243,port=80,localport=62411], Socket[addr=www.yahoo.com/87.248.122.122,port=80,localport=62413]] 

List.remove()是有效的。