Java 嵌套循环 list.add 怎么实现
时间: 2024-03-14 22:48:37 浏览: 59
假设你有两个List对象,分别是`list1`和`list2`,并且你想要对它们进行嵌套循环,并将循环得到的结果添加到一个新的List对象中,可以按照以下方式实现:
```java
List<Integer> resultList = new ArrayList<>();
for (Object obj1 : list1) {
for (Object obj2 : list2) {
// 进行一些操作,例如对obj1和obj2进行组合、计算等
int result = someOperation(obj1, obj2);
// 将结果添加到resultList中
resultList.add(result);
}
}
```
在上面的代码中,我们使用了两个循环来遍历list1和list2中的所有元素,然后进行某些操作,例如将它们组合或者进行计算,得到一个结果result,最后将result添加到新的List对象resultList中。如果你需要对List中的元素进行筛选,可以在内部循环中添加if语句进行判断。
需要注意的是,在循环过程中,如果出现了异常,可以在catch块中添加一些处理逻辑,例如打印异常信息,或者跳过本次循环。同时,如果你的List对象比较大,可能会涉及到性能问题,你可以考虑使用并发循环库,或者将循环拆分成多个线程来执行,以提高代码的执行效率。
相关问题
嵌套循环加if语句 list.add
如果你需要在嵌套循环中加入if语句进行筛选,并将符合条件的元素添加到新的List对象中,可以按照以下方式实现:
```java
List<Integer> resultList = new ArrayList<>();
for (Object obj1 : list1) {
for (Object obj2 : list2) {
// 进行一些操作,例如对obj1和obj2进行组合、计算等
int result = someOperation(obj1, obj2);
// 判断结果是否符合条件,如果符合,则添加到resultList中
if (result > 0) {
resultList.add(result);
}
}
}
```
在上面的代码中,我们首先使用两个循环来遍历list1和list2中的所有元素,然后对其进行组合、计算等操作,得到一个结果result。接着,我们使用if语句来判断结果是否符合条件,如果符合,则将其添加到新的List对象resultList中。
需要注意的是,if语句的判断条件可以根据具体情况进行修改,例如可以使用关系运算符、逻辑运算符、比较运算符等进行判断。同时,在循环过程中,如果出现了异常,可以在catch块中添加一些处理逻辑,例如打印异常信息,或者跳过本次循环。
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; public class PokeGame { public static void main(String[] args) { List<String> pokerCards = new ArrayList<>(); List<String> players = new ArrayList<>(); HashMap<String, List<String>> playerHands = new HashMap<>(); //创建了两个ArrayList对象,pokerCards和players,分别用于存储扑克牌和玩家信息。 //创建了一个HashMap对象playerHands,用于存储每个玩家的手牌。 String[] suits = {"♠", "♥", "♣", "♦"}; String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; //使用两个String数组suits和ranks来表示扑克牌的花色和点数。 for (String suit : suits) { for (String rank : ranks) { pokerCards.add(suit + rank); } } //使用嵌套的for循环将每个花色和点数组合在一起,构成一副完整的扑克牌,并将其添加到pokerCards中。 pokerCards.add("小王"); pokerCards.add("大王"); //添加了两张大小王到pokerCards中。 Collections.shuffle(pokerCards); //使用Collections.shuffle方法对pokerCards进行洗牌,打乱顺序。 players.add("小王"); players.add("小李"); players.add("小明"); //添加了三个玩家到players中。 int numPlayers = players.size(); int cardsPerPlayer = pokerCards.size() / numPlayers; int remainingCards = pokerCards.size() % numPlayers; //计算每个玩家应该分到的牌数和剩余的牌数。 int cardIndex = 0; for (String player : players) { List<String> hand = new ArrayList<>(); for (int i = 0; i < cardsPerPlayer; i++) { hand.add(pokerCards.get(cardIndex)); cardIndex++; } if (remainingCards > 0) { hand.add(pokerCards.get(cardIndex)); cardIndex++; remainingCards--; } playerHands.put(player, hand); } // Step 4: Display each player's hand for (String player : players) { System.out.println(player + "的手牌:" + playerHands.get(player)); } } } 改成用随机数组洗牌而不是用shuffle方法
要用随机数组洗牌的话,可以使用Fisher-Yates算法。以下是将代码改为使用随机数组洗牌的示例:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
public class PokeGame {
public static void main(String[] args) {
List<String> pokerCards = new ArrayList<>();
List<String> players = new ArrayList<>();
HashMap<String, List<String>> playerHands = new HashMap<>();
String[] suits = {"♠", "♥", "♣", "♦"};
String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for (String suit : suits) {
for (String rank : ranks) {
pokerCards.add(suit + rank);
}
}
pokerCards.add("小王");
pokerCards.add("大王");
shuffleCards(pokerCards);
players.add("小王");
players.add("小李");
players.add("小明");
int numPlayers = players.size();
int cardsPerPlayer = pokerCards.size() / numPlayers;
int remainingCards = pokerCards.size() % numPlayers;
int cardIndex = 0;
for (String player : players) {
List<String> hand = new ArrayList<>();
for (int i = 0; i < cardsPerPlayer; i++) {
hand.add(pokerCards.get(cardIndex));
cardIndex++;
}
if (remainingCards > 0) {
hand.add(pokerCards.get(cardIndex));
cardIndex++;
remainingCards--;
}
playerHands.put(player, hand);
}
for (String player : players) {
System.out.println(player + "的手牌:" + playerHands.get(player));
}
}
public static void shuffleCards(List<String> cards) {
Random random = new Random();
int size = cards.size();
for (int i = size - 1; i > 0; i--) {
int j = random.nextInt(i + 1);
String temp = cards.get(i);
cards.set(i, cards.get(j));
cards.set(j, temp);
}
}
}
```
这里新增了一个`shuffleCards`方法,使用Fisher-Yates算法实现洗牌功能。在洗牌前将扑克牌存储在列表中,然后调用`shuffleCards`方法进行洗牌。最后输出每个玩家的手牌。
希望对你有所帮助!如有任何疑问,请随时提问。
阅读全文