⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 friendsdatabase.java

📁 JAVA实现的聊天工具,可以容纳最多10个用户 1.本系统需要JDK1.5 或更高版本的支持。 2.serverDatabase为服务器端的数据文件. 若使用现有数据,可用帐号:1, 密码
💻 JAVA
字号:
//class to store friends' info
import java.util.*;
import java.io.*;
class FriendsData implements Serializable , Comparable<FriendsData>{
	private String  name;
	private long id;
	private String ip;
	
	/*public FriendsData(String name,long id){
		this.name=name;
		this.id=id;
	}*/
	
	public FriendsData(long id){ //constructor used when Collections.binarySerach() needed
		this.id=id;
	}
	
	public FriendsData(String name,long id,String ip){
		this.name=name;
		this.id=id;
		this.ip=ip;
	}
	
	public int compareTo(FriendsData fd){
		boolean b=(id==fd.getID());
		return (b==true ? 0 : id>fd.getID() ? 1 : -1);
	}
	
	void updateIP(String ip){
		this.ip=ip;
	}
	
	String getIP(){
		return ip;
	}
	
	String getName(){
		return name;
	}
	
	long getID(){
		return id;
	}
	
	void setName(String name){
		this.name=name;
	}
	
	public String toString(){
		return "ID: "+id+", Name: "+name;
	}
}
//one client has a FriendsDatabase
public class FriendsDatabase implements Serializable{
	private List<FriendsData> friendsList;
	//private List<FriendsData> onlineFriendsList=null;
	//private long key; //this key is associated with client's id; a client has a unique key
	
	public FriendsDatabase(){
		friendsList=new LinkedList<FriendsData>();
		synchronized (friendsList){};
		//onlineFriendsList=new LinkedList<FriendsData>();
	}
	
	/*public FriendsDatabase(long key){
		this();
		this.key=key;
	}
	
	public void setKey(long key){
		this.key=key;
	}
	
	public long getKey(){
		return key;
	}*/
	
	synchronized void removeAllFriends(){  //called when the server has quited,to clear the database
		friendsList.removeAll(friendsList);
	}
	
	synchronized boolean contains(long id){
		if(findFriend(id)==null)
			return false;
		return true;
	}
	
	synchronized boolean haveFriends(){ //if has any friend
		return !(friendsList.size()==0);
	}
	
	synchronized void addFriend(FriendsData fd){ //called from ClientControlThread
		friendsList.add(fd);
	}
	
	synchronized void delFriend(long friendID){ //called from ClientControlThread
		int index=Collections.binarySearch(friendsList,new FriendsData(friendID));
		if(index<0){
			//System.out.println("ID :"+friendID+" isn't your friends!");
			return;
		}
		friendsList.remove(index);
	}
	
	synchronized void viewAllFriends(){ //called from ClientControlThread
		if(friendsList.size()==0)
			System.out.println("Have no friends!");
		ListIterator iterator=friendsList.listIterator();
		for(;iterator.hasNext();)
			System.out.print("\n"+iterator.next());
	}
	
	/*void viewOnlineFriends(){  //called from ClientControlThread
		if(onlineFriendsList.size()==0) {
			System.out.println("No friends online!");
			return;
		}
		ListIterator iterator=onlineFriendsList.listIterator();
		for(;iterator.hasNext();)
			System.out.println("\n"+iterator.next());
	}*/
	
	synchronized void sortFriendsList(){ //called from ClientControlThread
		if(friendsList==null)
			return;
		Collections.sort(friendsList);
	}
	
	/*FriendsData findOnlineFriend(long id){
		int index=Collections.binarySearch(onlineFriendsList,new FriendsData(id));
		if(index<0)
			return null;
		else
			return onlineFriendsList.get(index);
	}
	
	synchronized void addOnlineFriend(FriendsData fd){ //called from ClientThread
		if(onlineFriendsList==null)
			onlineFriendsList=new LinkedList<FriendsData>();
		onlineFriendsList.add(fd);
	}
	
	synchronized void sortOnlineFriendsList(){ //called from ClientThread
		if(onlineFriendsList==null)
			return;
		Collections.sort(onlineFriendsList);
	}*/	
	
	synchronized FriendsData findFriend(long id){ //called from ClientThread
		int index=Collections.binarySearch(friendsList,new FriendsData(id));
		if(index<0)
			return null;
		else
			return friendsList.get(index);
	}	
    //called from ClientThread
	synchronized void friendQuit(long friendID){ //del this id from onlineFriendsList				
		System.out.println("Friend,ID:"+friendID+", Name :"+findFriend(friendID).getName()+" has quited.");
		delFriend(friendID);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -