JAva二分法による集合へのデータの挿入


1.昇順ソート、同一データ置換、異なるデータ挿入
public class two {
	public static void main(String[] args) {
		List asks = new ArrayList<>();
		asks.add(3);
		asks.add(5);
		asks.add(7);
		asks.add(9);
		asks.add(11);
		List search = search(asks,8);
		for (Integer integer : search) {
			System.out.println(integer);
		}
	}

	public static List search(List asks, int key) {
		boolean flag = false;
		int start = 0;
		int end = asks.size() - 1;
		int middle = 0;
		while (start <= end) {
			middle = (start + end) / 2;
			if (key < asks.get(middle)) {
				end = middle - 1;
			} else if (key > asks.get(middle)) {
				start = middle + 1;
			} else {
				flag = true;
				break;
			}
		}
		//    
		if (key > asks.get(middle)) {//key

2.実戦では、1つの順序付き集合に別の集合を挿入するデータ価格は同じで上書きされ、異なる挿入では、オブジェクト数属性はゼロ現在のオブジェクトシミュレーション株式データ深さリストSpotDepth:現物深さオブジェクト、フィールド(quantity:現在の価格数量、price:現在の価格)を削除します.
								//     
								List asks = oldSpotDepth.getAsks();
								//    
								List newAsks = spotDepth.getAsks();
								//         
								if (asks != null && asks.size() > 0) {
									for (int i = 0; i < newAsks.size(); i++) {
										SpotDepthItem newAsk = newAsks.get(i);
										boolean flag = false;
										double key = newAsk.getPrice().doubleValue();
										int start = 0;
										int end = asks.size() - 1;
										int middle = 0;
										while (start <= end) {
											middle = (start + end) / 2;
											if (key < asks.get(middle).getPrice().doubleValue()) {
												end = middle - 1;
											} else if (key > asks.get(middle).getPrice().doubleValue()) {
												start = middle + 1;
											} else {
												flag = true;
												break;
											}
										}
										if (key > asks.get(middle).getPrice().doubleValue()) {
											middle++;
										}
										if (newAsk.getQuantity().doubleValue() == 0) {
											asks.remove(middle);
										} else {
											if (flag) {
												asks.set(middle, newAsk);
											} else {
												asks.add(middle, newAsk);
											}
										}
									}
								}