public void add(String suffixName){
		
		// 初始：添加第一个suffix
		if(suffixList.size() == 0){
			suffixList.add(new Suffix(suffixName, 1));
			key2Position.put(suffixName, 0);
			return;
		}
		
		
		Integer posObj = key2Position.get(suffixName);

		// suffixName第一次添加
		if(posObj == null){
			int tailPos = suffixList.size() - 1;
			boolean insert = false;
			for(int i = tailPos; i >= 0; i--){
				if(1 < suffixList.get(i).getSupport()){
					insert = true;
					suffixList.add(i + 1, new Suffix(suffixName, 1));
					updateKey2Pos(suffixName, Integer.MAX_VALUE, i + 1);
					break;
				}
			}
			if(!insert){
				suffixList.add(0, new Suffix(suffixName, 1));
				updateKey2Pos(suffixName, Integer.MAX_VALUE, 0);
			}
			
		}
		// suffixName非第一次添加
		else{
			// important! pos is an Integer Object, if we do not cast it to int.
			// then, it will use pos as an List element when we use List.remove(pos).
			int pos = posObj.intValue();
			
			
			int newSupport = suffixList.get(pos).getSupport() + 1;
			boolean insert = false;
			for(int i = pos; i >= 0; i--){
				if(newSupport < suffixList.get(i).getSupport()){
					insert = true;
					suffixList.remove(pos);
					suffixList.add(i + 1, new Suffix(suffixName, newSupport));
					updateKey2Pos(suffixName, pos, i + 1);
					break;
				}
			}
			if(!insert){
				suffixList.remove(pos);
				suffixList.add(0, new Suffix(suffixName, newSupport));
				updateKey2Pos(suffixName, pos, 0);
			}
		}
		
		// 如果超出规定的List大小，移除最后一个元素
		if(suffixList.size() > maxSuffixSize){
			String key = suffixList.get(maxSuffixSize).getSuffix();
			suffixList.remove(maxSuffixSize);
			key2Position.remove(key);
		}
	}