简体   繁体   中英

Is there a way to get a random key and its respective value from a TreeMap?

I want to get a random key and its respective value from a TreeMap. The idea is that a random generator would pick a key and display that value. The key is a string and the value is a double. For example myMap.put("CanSoupWt", 1.0).

Here is the code I've attempted to use. I'm new to Java programming, so my coding is a bit inelegant. What I'm attempting to do is randomly retrieve a key value pair from the Treemap. Then remove the key value pair from the TreeMap and repeat the process with the resulting TreeMap.

package traditional_pantry_sep08_2022;

import java.util.ArrayList;
import java.util.TreeMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Main2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // select most preferred can food
        
                double v_Can_Soup_Wt = 0.95;
                double v_Can_Peas_Wt = 0.95;
                double v_Can_Mix_Wt = 0.95;
                double v_Can_Meat_Wt = 0.95;
                double v_Can_Corn_Wt = 0.95;
                double v_Can_Green_Wt = 0.95;
                double v_Can_Veggies_Wt = 0.95;
                double v_Can_Apple_Wt = 0.95;
                
                double v_Can_Soup_Qty = 0;
                double v_Can_Peas_Qty = 0;
                double v_Can_Mix_Qty = 0; 
                double v_Can_Meat_Qty = 0;
                double v_Can_Corn_Qty = 0;
                double v_Can_Green_Qty = 0;
                double v_Can_Veggies_Qty = 0;
                double v_Can_Apple_Qty = 0;
                        
                
                double household = 2;
                double v_Can_Tot_Wt = 0;

                //Set Weight Limit for canned Food based on household size
                double v_Can_Tot_MaxWt = 14 + (4 * (household -1));

                //Set Max Qty of canned food items based on household size
                double v_Can_Soup_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Peas_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Mix_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Meat_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Corn_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Green_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Veggies_MaxQty = 5 + (2 * (household - 1));
                double v_Can_Apple_MaxQty = 5 + (2 * (household - 1));

                // Select can foods randomly until we reach weight limit
                //input canned food weights into TreeMap
                    TreeMap<String, Double> canall = new TreeMap<String, Double>();
                    canall.put("CanSoupWt", v_Can_Soup_Wt);
                    canall.put("CanPeasWt", v_Can_Peas_Wt);
                    canall.put("CanMixWt", v_Can_Mix_Wt);
                    canall.put("CanMeatWt", v_Can_Meat_Wt);
                    canall.put("CanCornWt", v_Can_Corn_Wt);
                    canall.put("CanGreenWt", v_Can_Green_Wt);
                    canall.put("CanVeggiesWt", v_Can_Veggies_Wt);
                    canall.put("CanAppleWt", v_Can_Apple_Wt);
                                            
                // printing the TreeMap
                    System.out.println("The TreeMap is : " + canall);
                        
                //pick a random canned food item from the TreeMap 

                        //Object[] crunchifyKeys = canall.keySet().toArray();
                        
                do {        
                        Object[] crunchifyKeys = canall.keySet().toArray();
                        Object key = crunchifyKeys[new Random().nextInt(crunchifyKeys.length)];
                        System.out.println("************ Random Value ************ \n" + key + " :: " + canall.get(key));
                        List<Map.Entry<String, Double>> list = new ArrayList<Map.Entry<String, Double>>(canall.entrySet()); 
                        System.out.println("The TreeMap is : " + canall);       
                        
                      //pick maximum number of canned food items
                        if (key == "CanSoupWt") {
                            do {
                                v_Can_Soup_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Soup_Wt * v_Can_Soup_Qty);
                                }           
                                while (v_Can_Soup_Qty < v_Can_Soup_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Soup_Qty--;
                                }       
                            canall.remove("CanSoupWt"); //remove selected item
                            }   
                            else if (key == "CanPeasWt") {
                                do {
                                v_Can_Peas_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Peas_Wt * v_Can_Peas_Qty); 
                                }           
                                while (v_Can_Peas_Qty < v_Can_Peas_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Peas_Qty--;
                                }
                            canall.remove("CanPeasWt"); //remove selected item
                            }   
                            else if (key == "CanMixWt") {
                                do {
                                v_Can_Mix_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Mix_Wt * v_Can_Mix_Qty);
                                }           
                                while (v_Can_Mix_Qty < v_Can_Mix_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Mix_Qty--;
                                }
                            canall.remove("CanMixWt"); //remove selected item
                            }                       
                            else if (key == "CanMeatWt") {
                                do {
                                v_Can_Meat_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Meat_Wt * v_Can_Meat_Qty);
                                }           
                                while ( v_Can_Meat_Wt < v_Can_Meat_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Meat_Qty--;
                                }   
                            canall.remove("CanMeatWt"); //remove selected item          
                            }
                            else if (key == "CanCornWt") {
                                do {
                                v_Can_Corn_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Corn_Wt * v_Can_Corn_Qty);
                                }           
                                while (v_Can_Corn_Wt < v_Can_Corn_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Corn_Qty--;
                                }   
                            canall.remove("CanCornWt"); //remove selected item
                            }
                            else if (key == "CanGreenWt") {
                                do {
                                v_Can_Green_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Green_Wt * v_Can_Green_Qty);
                                }           
                                while (v_Can_Green_Wt < v_Can_Green_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Green_Qty--;
                                }   
                            canall.remove("CanGreenWt"); //remove selected item 
                            }
                            else if (key == "CanVeggiesWt") {
                                do {
                                v_Can_Veggies_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Veggies_Wt * v_Can_Veggies_Qty);
                                }           
                                while (v_Can_Veggies_Wt < v_Can_Veggies_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Veggies_Qty--;
                                }   
                            canall.remove("CanVeggiesWt"); //remove selected item           
                            }       
                            else if (key == "CanAppleWt") {
                                do {
                                v_Can_Apple_Qty++;
                                v_Can_Tot_Wt = v_Can_Tot_Wt + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                                }           
                                while (v_Can_Apple_Wt < v_Can_Apple_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                                if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                                    v_Can_Apple_Qty--;
                                }   
                            canall.remove("CanAppleWt"); //remove selected item         
                            
                            }
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                                + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty) 
                                + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                                + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                            }
                while (v_Can_Tot_Wt < v_Can_Tot_MaxWt);
                
                System.out.println("Household Members: " +household);
                System.out.println("Can Soup Qty: " +v_Can_Soup_Qty);
                System.out.println("Can Peas Qty: " +v_Can_Peas_Qty);
                System.out.println("Can Mix Beans Qty: " +v_Can_Mix_Qty);
                System.out.println("Can Meat Qty: " +v_Can_Meat_Qty);
                System.out.println("Can Corn Qty: " +v_Can_Corn_Qty);
                System.out.println("Can Green Qty: " +v_Can_Green_Qty);
                System.out.println("Can Veggies Qty: " +v_Can_Veggies_Qty);
                System.out.println("Can Apple Qty: " +v_Can_Apple_Qty);
                System.out.println("Can Food Total Weight: " +v_Can_Tot_Wt);
                System.out.println("Can Food Maximum Weight: " +v_Can_Tot_MaxWt);
                // printing the TreeMap
                System.out.println("The TreeMap is : " + canall);
                }       
            }

This isn't the most efficient code. But it seems to work.

package traditional_pantry_sep08_2022;

import java.util.ArrayList;
import java.util.TreeMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Main {

    public static void main(String[] args) {
        // select most preferred can food
        
        double v_Can_Soup_Wt = 0.95;
        double v_Can_Peas_Wt = 0.95;
        double v_Can_Mix_Wt = 0.95;
        double v_Can_Meat_Wt = 0.95;
        double v_Can_Corn_Wt = 0.95;
        double v_Can_Green_Wt = 0.95;
        double v_Can_Veggies_Wt = 0.95;
        double v_Can_Apple_Wt = 0.95;
        
        double v_Can_Soup_Qty = 0;
        double v_Can_Peas_Qty = 0;
        double v_Can_Mix_Qty = 0; 
        double v_Can_Meat_Qty = 0;
        double v_Can_Corn_Qty = 0;
        double v_Can_Green_Qty = 0;
        double v_Can_Veggies_Qty = 0;
        double v_Can_Apple_Qty = 0;
                
        
        double household = 2;
        double v_Can_Tot_Wt = 0;

        //Set Weight Limit for canned Food based on household size
        double v_Can_Tot_MaxWt = 14 + (4 * (household -1));

        //Set Max Qty of canned food items based on household size
        double v_Can_Soup_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Peas_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Mix_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Meat_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Corn_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Green_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Veggies_MaxQty = 5 + (2 * (household - 1));
        double v_Can_Apple_MaxQty = 5 + (2 * (household - 1));

        // Select can foods randomly until we reach weight limit
        //input canned food weights into TreeMap
            TreeMap<String, Double> canall = new TreeMap<String, Double>();
            canall.put("CanSoupWt", v_Can_Soup_Wt);
            canall.put("CanPeasWt", v_Can_Peas_Wt);
            canall.put("CanMixWt", v_Can_Mix_Wt);
            canall.put("CanMeatWt", v_Can_Meat_Wt);
            canall.put("CanCornWt", v_Can_Corn_Wt);
            canall.put("CanGreenWt", v_Can_Green_Wt);
            canall.put("CanVeggiesWt", v_Can_Veggies_Wt);
            canall.put("CanAppleWt", v_Can_Apple_Wt);
                                    
        // printing the TreeMap
            System.out.println("The TreeMap is : " + canall);
                
        //pick a random canned food item from the TreeMap 

                //Object[] crunchifyKeys = canall.keySet().toArray();
                
        do {        
                Object[] crunchifyKeys = canall.keySet().toArray();
                Object key = crunchifyKeys[new Random().nextInt(crunchifyKeys.length)];
                System.out.println("************ Random Value ************ \n" + key + " :: " + canall.get(key));
                List<Map.Entry<String, Double>> list = new ArrayList<Map.Entry<String, Double>>(canall.entrySet()); 
                System.out.println("The TreeMap is : " + canall);       
                
                //pick maximum number of canned food items
                if (key == "CanSoupWt") {
                    do {
                        v_Can_Soup_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                        + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty) 
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                        + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Soup_Qty < v_Can_Soup_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Soup_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                            + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty) 
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                            + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }       
                
                    canall.remove("CanSoupWt"); //remove selected item
                    }   
                    else if (key == "CanPeasWt") {
                        do {
                        v_Can_Peas_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                        + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty) 
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                        + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Peas_Qty < v_Can_Peas_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Peas_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                            + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                            + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }
                    canall.remove("CanPeasWt"); //remove selected item
                    }   
                    else if (key == "CanMixWt") {
                        do {
                        v_Can_Mix_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Mix_Qty < v_Can_Mix_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Mix_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }
                    canall.remove("CanMixWt"); //remove selected item
                    }                       
                    else if (key == "CanMeatWt") {
                        do {
                        v_Can_Meat_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while ( v_Can_Meat_Wt < v_Can_Meat_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Meat_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }   
                    canall.remove("CanMeatWt"); //remove selected item          
                    }
                    else if (key == "CanCornWt") {
                        do {
                        v_Can_Corn_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Corn_Wt < v_Can_Corn_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Corn_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }   
                    canall.remove("CanCornWt"); //remove selected item
                    }
                    else if (key == "CanGreenWt") {
                        do {
                        v_Can_Green_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Green_Wt < v_Can_Green_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Green_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }   
                    canall.remove("CanGreenWt"); //remove selected item 
                    }
                    else if (key == "CanVeggiesWt") {
                        do {
                        v_Can_Veggies_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Veggies_Wt < v_Can_Veggies_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Veggies_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }   
                    canall.remove("CanVeggiesWt"); //remove selected item           
                    }       
                    else if (key == "CanAppleWt") {
                        do {
                        v_Can_Apple_Qty++;
                        v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }           
                        while (v_Can_Apple_Wt < v_Can_Apple_MaxQty /*&& v_Can_Tot_Wt < v_Can_Tot_MaxWt*/);
                        if (v_Can_Tot_Wt > v_Can_Tot_MaxWt) {
                            v_Can_Apple_Qty--;
                            v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty)
                            + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                        }   
                    canall.remove("CanAppleWt"); //remove selected item         
                    /*v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                        + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty) 
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                        + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);*/
                    }
                    v_Can_Tot_Wt = (v_Can_Soup_Wt * v_Can_Soup_Qty) + (v_Can_Peas_Wt * v_Can_Peas_Qty) 
                        + (v_Can_Mix_Wt * v_Can_Mix_Qty) + (v_Can_Meat_Wt * v_Can_Meat_Qty) 
                        + (v_Can_Corn_Wt * v_Can_Corn_Qty)+ (v_Can_Green_Wt * v_Can_Green_Qty) 
                        + (v_Can_Veggies_Wt * v_Can_Veggies_Qty) + (v_Can_Apple_Wt * v_Can_Apple_Qty);
                    }
        while (v_Can_Tot_Wt < v_Can_Tot_MaxWt);
        
        System.out.println("Household Members: " +household);
        System.out.println("Can Soup Qty: " +v_Can_Soup_Qty);
        System.out.println("Can Peas Qty: " +v_Can_Peas_Qty);
        System.out.println("Can Mix Beans Qty: " +v_Can_Mix_Qty);
        System.out.println("Can Meat Qty: " +v_Can_Meat_Qty);
        System.out.println("Can Corn Qty: " +v_Can_Corn_Qty);
        System.out.println("Can Green Qty: " +v_Can_Green_Qty);
        System.out.println("Can Veggies Qty: " +v_Can_Veggies_Qty);
        System.out.println("Can Apple Qty: " +v_Can_Apple_Qty);
        System.out.println("Can Food Total Weight: " +v_Can_Tot_Wt);
        System.out.println("Can Food Maximum Weight: " +v_Can_Tot_MaxWt);
        // printing the TreeMap
        System.out.println("The TreeMap is : " + canall);
        }       
    }
    

NavigableMap#navigableKeySet

I want to get a random key and its respective value from a TreeMap

For any NavigableMap such as TreeMap , you can get a set of keys that iterate in the map's defined order.

NavigableMap < String , Double > map = new TreeMap<>() ;
…
NavigableSet < String > keysSet = map.navigableKeySet() ;

From there we can get an unmodifiable list.

List < String > keys = List.copyOf( keysSet ) ; 

Finally, we can access elements of the list randomly by generating an index number. Remember that index numbers are zero-based counting.

int index = ThreadLocalRandom.current().nextInt( keys.size() ) ;
String k = keys.get( index ) ;

And retrieve the associated value from the map.

Double v = map.get( k ) ;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM