[TreeMap]: создание и загрузка TreeMap в одном классе и доступ к этому Tmap из нескольких отдельных / разных классов - PullRequest
0 голосов
/ 23 марта 2019

Ошибки компиляции устраняются с помощью «нового» определения TMap, НЕ возможной ссылки на дублирование.Я пытался прояснить это.Я Java Newbee, и это мой первый пост.

Проблема, как и тогда, заключается в том, что я не могу получить доступ к моему TMap из разных классов.

Сказав это, мои Путы будут потеряны из-за последующего Get с "new".Кажется, я не могу получить доступ к TMap, не создавая его снова и снова.Последовательность событий: Определите / init TMap => Put / Get to TMap => Get TMap с «новым».

Я нашел несколько похожих и хороших идей в вопросе Stackoverflow: «Доступ к HashMap из другого класса»,

Создание и инициализация классов древовидной карты DataStorage и Put / Get классов PutDataStorage работают нормально (успешно загружены и могут получить эти записи).

Я пытаюсь получить с «новым» DataStorage (потому что я еще не понял, как получить доступ к таблице в противном случае) и не удается, потому что я создал новый Tmap.

Я что-то упускаю из этих примеров.Может быть, полный пример поможет мне вместо кусочков.Мне нравятся концепции кусочков, но я слишком новичок, чтобы ценить отдельные кусочки в настоящее время и уже потратил слишком много времени на это (время от времени в течение нескольких недель).

Да, я такой новый;).Я как-нибудь исправлю это в какой-то момент.

Резюме:

В идеале я пытаюсь создать и загрузить мою TreeMap в один класс.Доступ к тому же TreeMap из одного или нескольких отдельных / дополнительных / других классов.

Что у меня сейчас: Потерянные начальные загруженные данные и карта.Невозможность доступа к моей карте дерева из другого класса.

Тем временем я все еще пробую разные идеи, играю с пакетами и т. Д.

Определение / инициализация карты дерева: DataStorage

import java.util.TreeMap;
public class DataStorage {
 public static TreeMap<String, Integer> people = new TreeMap<String, Integer>();
}

И Put: PutDataStorage

import java.util.TreeMap;
public class PutDataStorage {
/** 
 * Run one time "put"
 */
    public static void main(String[] args) {  
       DataStorage storage = new DataStorage();
       TreeMap<String, Integer> people = storage.people;
            people.put("bob", 2);
            people.put("susan", 5);

        System.out.println("PutData whole Entry  " +people.entrySet());
        System.out.println("PutData First Entry  " +people.firstEntry());
        System.out.println("PutData susan Value  " +people.get("susan"));
    }
    }

Get Treemap: GetDataStorage Удаляет мои предыдущие записи пут, потому что у меня там "новое".Единственная запись, которую я получаю из GetDataStorage, - это запись соло popeye = 3.Мне нужно найти способ получить доступ к TMap без необходимости воссоздавать его снова и снова.

import java.util.TreeMap;
public class GetDataStorage {

    public static void main(String[] args) {  //System.out.println("main");
        DataStorage storage = new DataStorage();
        TreeMap<String, Integer> people = storage.people;
       // TreeMap<String, Integer> people = new TreeMap<String, Integer>();
        people.get("bob");
        people.get("susan");
        people.put("popeye", 3);
        System.out.println("GetData 1stEntry  " +people.firstEntry());
        System.out.println("GetData bobValue  " +people.get("bob"));
        System.out.println("GetData popValue  " +people.get("popeye"));
        System.out.println("GetData lowerKey  " +people.lowerEntry("popeye"));
        System.out.println("GetData highKey   " +people.higherEntry("popeye"));
    }
    }

Вывод: из пут

PutData whole Entry  [bob=2, susan=5]
PutData First Entry  bob=2
PutData susan Value  5

Вывод: из Get

GetData 1stEntry  popeye=3
GetData bobValue  null
GetData popValue  3
GetData lowerKey  popeye=3
GetData hireKey   popeye=3

Ожидаемый результат Get должен быть:

GetData 1stEntry  bob=2
GetData bobValue  2
GetData popValue  3
GetData lowerKey  bob=2
GetData highKey   susan=5

Заранее благодарим.

1 Ответ

0 голосов
/ 31 марта 2019

Оба класса снова "статичны".

Работает с или без создания причины пакета публичного определения. Я создал и протестировал оба. Если хотите, закомментируйте имя пакета в обоих классах.

Обратите внимание, что мои путы расположены в не возрастающем порядке, чтобы доказать, что навигация работает для моего TreeMap.

Не пугайтесь количества строк ответов, так как большинство из них напечатаны и комментируют.

Класс PutDS (создает и загружает TreeMap и его записи).

//package twowherewego;

import java.util.TreeMap;

public class PutDS {        // Put DS(Data Storage)

public static TreeMap gettMapCashType(){    System.out.println("PutDS - entered " );
    // Create TreeMap=tMapCashType  and "put" two records to tMapCashType
       TreeMap<String, String> tMapCashType = new TreeMap<String, String>();

                tMapCashType.put("C", "Credit Card");  // out of order puts
                tMapCashType.put("A", "All");

System.out.println("PutDS " + tMapCashType);
                return tMapCashType;
            }
    }

«Основной» класс, который выполняет PutDS, а затем помещает дополнительные записи TreeMap, затем получает несколько записей, используя ключевые слова навигации TreeMap:

//package twowherewego;
import java.util.TreeMap;

public class GetDS{         // Get DS(Data Storage)

    public static void main(String[] args) {  
        System.out.println("Works with or without 'towherewego' package cause it is public");
        System.out.println("** GetDS main: call PutDS and...");
        // Execute PutDS with method=gettMapCashType() 
       TreeMap<String, String> people = PutDS.gettMapCashType();   //class=PutDS "." method
       System.out.println("** back into GetDS main: after call to PutDS ");
                                            // space or no space ='s no difference
       people.put("D","popeye");            // notice this "put" has no space                                            
       people.put("B", "Bank Card");        // notice this "put" has a space after the ","

        System.out.println("{{{ Navigational helpful keywords, etc }}}" );
        System.out.println("GetData keySet      " +people.keySet());         // key 
        System.out.println("GetData entrySet    " +people.entrySet());       // key and value 
        System.out.println("GetData 1stEntry    " +people.firstEntry());     // 1st entry/key 
        System.out.println("GetData B_BankCard  " +people.get("B"));         // get B value 
        System.out.println("GetData B_lowerKey  " +people.lowerEntry("B"));  // get B lower
        System.out.println("GetData B_highrKey  " +people.higherEntry("B")); // get B higher    
        System.out.println("GetData lastEntry   " +people.lastEntry());      // last entry/key

           System.out.println("**  << End of GetDS >>");
    }
    }         

Создает / отображает трассировочные и навигационные записи с их ключевыми словами. Примечание: операции были сделаны в порядке убывания, но TreeMap (по умолчанию) переставил их в порядке возрастания (см. «GetData keySet, ... entrySet» для примеров).

Works with or without 'towherewego' package cause it is public
** GetDS main: call PutDS and...
PutDS - entered 
PutDS {A=All, C=Credit Card}
** back into GetDS main: after call to PutDS 
{{{ Navigational helpful keywords, etc }}}
GetData keySet      [A, B, C, D]
GetData entrySet    [A=All, B=Bank Card, C=Credit Card, D=popeye]
GetData 1stEntry    A=All
GetData B_BankCard  Bank Card
GetData B_lowerKey  A=All
GetData B_highrKey  C=Credit Card
GetData lastEntry   D=popeye
**  << End of GetDS >>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...