java.util.LinkedList#peekFirst ( )源码实例Demo

下面列出了java.util.LinkedList#peekFirst ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: arma-intellij-plugin   文件: SQFSyntaxChecker.java
@Nullable
private ValueType getPeekType(@NotNull LinkedList<ExprPart> parts,
							  @NotNull LinkedList<ExprPart> removedParts,
							  @NotNull ProblemsHolder problems,
							  @NotNull LinkedList<PotentialProblem> potentialProblems,
							  @NotNull Counter reportCount) {
	ExprPart peekPart = parts.peekFirst();
	if (peekPart == null) {
		return null;
	}
	if (peekPart.isOperatorPart()) {
		return getReturnTypeForCommand(
				parts,
				null,
				problems,
				potentialProblems,
				reportCount,
				true
		);
	} else {
		removedParts.push(parts.removeFirst());
		return peekPart.getArgument().getType(this, true, cluster);
	}
}
 
源代码2 项目: arma-intellij-plugin   文件: SQFSyntaxChecker.java
@Nullable
private ValueType getPeekType(@NotNull LinkedList<ExprPart> parts,
							  @NotNull LinkedList<ExprPart> removedParts,
							  @NotNull ProblemsHolder problems,
							  @NotNull LinkedList<PotentialProblem> potentialProblems,
							  @NotNull Counter reportCount) {
	ExprPart peekPart = parts.peekFirst();
	if (peekPart == null) {
		return null;
	}
	if (peekPart.isOperatorPart()) {
		return getReturnTypeForCommand(
				parts,
				null,
				problems,
				potentialProblems,
				reportCount,
				true
		);
	} else {
		removedParts.push(parts.removeFirst());
		return peekPart.getArgument().getType(this, true, cluster);
	}
}
 
源代码3 项目: xlsmapper   文件: StackUtils.java
/**
 * スタックの先頭の要素(一番上の要素)が引数で指定した文字列の何れかと等しいかどうか比較する。
 * @param stack
 * @param strs 比較する文字列の配列
 * @return
 */
public static boolean equalsAnyTopElement(final LinkedList<String> stack, final String[] strs) {
    
    ArgUtils.notNull(stack, "stack");
    ArgUtils.notEmpty(strs, "strs");
    
    if(stack.isEmpty()) {
        return false;
    }
    
    final String top = stack.peekFirst();
    for(String str : strs) {
        if(str.equals(top)) {
            return true;
        }
    }
    
    return false;
    
}
 
源代码4 项目: super-csv-annotation   文件: StackUtils.java
/**
 * スタックの先頭の要素(一番上の要素)が引数で指定した文字列の何れかと等しいかどうか比較する。
 * @param stack
 * @param strs 比較する文字列の配列
 * @return
 */
public static boolean equalsAnyTopElement(final LinkedList<String> stack, final String[] strs) {
    
    Objects.requireNonNull("stack should not be null.");
    Objects.requireNonNull("strs should not be null.");
    
    if(stack.isEmpty()) {
        return false;
    }
    
    final String top = stack.peekFirst();
    for(String str : strs) {
        if(str.equals(top)) {
            return true;
        }
    }
    
    return false;
    
}
 
源代码5 项目: Project   文件: SlidingWindowMaxArray.java
public static int[] getMaxWindow(int[] arr, int w) {
    if (arr == null || w < 1 || arr.length < w) {
        return null;
    }
    // LinkedList 就是一个标准的双向链表
    LinkedList<Integer> maxList = new LinkedList<Integer>();
    // 生成的结果数组
    int[] res = new int[arr.length - w + 1];
    int index = 0;
    for (int i = 0; i < arr.length; i++) {
        // 更新双端队列,如果双端队列不为空,并且尾结点(存的是下标)对应数组中的值是否小于等于当前值
        while (!maxList.isEmpty() && arr[maxList.peekLast()] <= arr[i]) {
            maxList.pollLast();
        }
        // 上面一直弹出,直到不符合然后加上当前值。
        maxList.addLast(i);
        // 上面加法是通用的,但是减法是针对该题定制的
        // 当过期的时候(当窗口形成之后再扩充才算过期)即窗口长度 > w,窗口形成过程中不会过期, i - w表示过期的下标
        if (maxList.peekFirst() == i - w) {
            maxList.pollFirst();
        }
        // 判断下标过期
        if (i >= w - 1) {
            // 当窗口已经形成了,记录每一步的res
            res[index++] = arr[maxList.peekFirst()];
        }
    }
    return res;
}
 
源代码6 项目: Project   文件: AllLessNumSubArray.java
/**
 * 使用双向最大最小值更新结构,时间复杂度为 O(N)
 */
public static int getNum(int[] arr, int num) {
    if (arr == null || arr.length == 0) {
        return 0;
    }
    // 分别准备最大值和最小值更新结构
    LinkedList<Integer> qmax = new LinkedList<Integer>();
    LinkedList<Integer> qmin = new LinkedList<Integer>();
    int L = 0;
    int R = 0;
    int res = 0;
    while (L < arr.length) {
        while (R < arr.length) {
            while (!qmin.isEmpty() && arr[qmin.peekLast()] >= arr[R]) {
                qmin.pollLast();
            }
            qmin.addLast(R);
            while (!qmax.isEmpty() && arr[qmax.peekLast()] <= arr[R]) {
                qmax.pollLast();
            }
            qmax.addLast(R);
            // 不达标
            if (arr[qmax.getFirst()] - arr[qmin.getFirst()] > num) {
                break;
            }
            R++;
        }
        if (qmin.peekFirst() == L) {
            qmin.pollFirst();
        }
        if (qmax.peekFirst() == L) {
            qmax.pollFirst();
        }
        res += R - L;
        // 换一个开头
        L++;
    }
    return res;
}
 
源代码7 项目: Project   文件: Offer59I.java
public int[] maxSlidingWindow(int[] nums, int k) {
    if (nums == null || k < 1 || nums.length < k) {
        return new int[0];
    }

    LinkedList<Integer> maxList = new LinkedList<Integer>();
    int[] res = new int[nums.length - k + 1];
    int index = 0;
    for (int i = 0; i < nums.length; i++) {
        // 更新双端队列,如果双端队列不为空,并且尾结点(存的是下标)对应数组中的值是否小于等于当前值
        while (!maxList.isEmpty() && nums[maxList.peekLast()] <= nums[i]) {
            maxList.pollLast();
        }
        // 上面一直弹出,直到不符合然后加上当前值。
        maxList.addLast(i);
        // 上面加法是通用的,但是减法是针对该题定制的
        // 当过期的时候(当窗口形成之后再扩充才算过期)即窗口长度 > k,窗口形成过程中不会过期, i - k 表示过期的下标
        if (maxList.peekFirst() == i - k) {
            maxList.pollFirst();
        }
        // 判断下标过期
        if (i >= k - 1) {
            // 当窗口已经形成了,记录每一步的res
            res[index++] = nums[maxList.peekFirst()];
        }
    }
    return res;
}
 
源代码8 项目: coding-interviews   文件: LastSameInTree.java
/**
 * 两个链表前面的结点都是相同的,找到最后一个相同的结点就是最低公共祖先
 */
private Node getLastSameNode(LinkedList<Node> path1, LinkedList<Node> path2) {
    Node lastSameNode = null;
    while (!path1.isEmpty() && !path2.isEmpty()) {
        if (path1.peekFirst() == path2.removeFirst()) {
            lastSameNode = path1.removeFirst();
        } else {
            return lastSameNode;
        }
    }
    return lastSameNode;
}
 
源代码9 项目: super-cloudops   文件: DefaultMemoryEventStore.java
@Override
public synchronized Partition least() {
	if (!this.records.isEmpty()) {
		// Expired clean.
		this.checkExpiredSampleClean();

		LinkedList<Partition> records0 = this.getASCRecords();
		Partition part = records0.peekFirst();
		if (part != null) {
			part.setSamples(records0.size());
			return part;
		}
	}
	return null;
}
 
源代码10 项目: Android_Code_Arbiter   文件: CommandInjection.java
private String transferThroughList(String in, int index) {
    LinkedList<String> list = new LinkedList<String>();
    list.add(System.getenv("")); // taints the list
    list.clear(); // makes the list safe again
    list.add(1, "xx");
    list.addFirst(in); // can taint the list
    list.addLast("yy");
    list.push(in);
    return list.element() + list.get(index) + list.getFirst() + list.getLast()
            + list.peek() + list.peekFirst() + list.peekLast() + list.poll()
            + list.pollFirst() + list.pollLast() + list.pop() + list.remove()
            + list.remove(index) + list.removeFirst() + list.removeLast()
            + list.set(index, "safe") + list.toString();
}
 
源代码11 项目: text-ui   文件: TreeLineRenderer.java
@Override
public LineReader reader(final int width) {


  final LinkedList<LineReader> readers  = new LinkedList<LineReader>();
  for (LineRenderer child : children) {
    readers.addLast(child.reader(width - 2));
  }

  //
  return new LineReader() {

    /** . */
    LineReader value = TreeLineRenderer.this.value != null ? TreeLineRenderer.this.value.reader(width) : null;

    /** . */
    boolean node = true;

    public boolean hasLine() {
      if (value != null) {
        if (value.hasLine()) {
          return true;
        } else {
          value = null;
        }
      }
      while (readers.size() > 0) {
        if (readers.peekFirst().hasLine()) {
          return true;
        } else {
          readers.removeFirst();
          node = true;
        }
      }
      return false;
    }

    public void renderLine(RenderAppendable to) {
      if (value != null) {
        if (value.hasLine()) {
          value.renderLine(to);
        } else {
          value = null;
        }
      }
      if (value == null) {
        while (readers.size() > 0) {
          LineReader first = readers.peekFirst();
          if (first.hasLine()) {
            if (node) {
              to.append("+-");
              node = false;
            } else {
              Iterator<LineReader> i = readers.descendingIterator();
              boolean rest = false;
              while (i.hasNext()) {
                LineReader renderer = i.next();
                if (i.hasNext()) {
                  if (renderer.hasLine()) {
                    rest = true;
                    break;
                  }
                }
              }
              if (rest) {
                to.append("| ");
              } else {
                to.append("  ");
              }
            }
            first.renderLine(to);
            break;
          }
        }
      }
    }
  };
}