簡體   English   中英

我們可以將循環變量分配給 Java 循環內的值嗎?

[英]Can we assign a variable for looping to a value inside the loop in Java?

我想為 Java 中的 for 循環內的迭代變量分配某個值。

List<Integer> values = Arrays.asList(1,2,4,16,32,64,128);
for (Integer value: values) {
   value = value / 2;  // local value
}

這個作業在java工作嗎?

不,你不能,也不推薦,但在你的情況下

List<Integer> values = Arrays.asList(1,2,4,16,32,64,128);
    for (Integer value: values) {
       value = value / 2;  // local value even its modify it will not affect in collection so you will not get an error.
    }

Java 有值類型引用類型 因此,如果您正在修改foreach循環中的任何內容及其值類型,它將起作用,並且它的本地值將不會修改集合,但是如果它的引用類型,您將收到錯誤。

在 for-each 循環中,我們不能修改集合,它會拋出ConcurrentModificationException修改集合只是意味着刪除一個元素或更改存儲在集合中的項目的內容。

如果要修改集合,請使用迭代器

如果你只需要遍歷使用foreach

更多請訪問這里

您可以通過自己的方式進行黑客攻擊,但這是非常可疑的,如果您真的需要這樣做,那么您可能做錯了什么。

您可能需要的是另一個集合,您可以在其中放置處理過的值,

List<Integer> values = Arrays.asList(1,2,4,16,32,64,128);
List<Integer> newValues = new LinkedList();

for (Integer value: values) {
  newValues.add(value / 2); 
}

或者,如果您問是否可以簡單地重新分配迭代器值,當然可以,但又有點可疑。 也許你可以在這種情況下使用它;

List<Integer> values = Arrays.asList(1,2,4,16,32,64,128);

for (Integer value: values) {
  if(value > 32)
    value = 32;
  process(value); 
}

由於我只重新分配迭代器value它是安全的,但是在循環期間編輯集合將導致ConcurrentModificationException或更糟(hacky way),因為您無法始終確定列表實現的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM