Rzutowanie/konwersja na String

Rzutowanie/konwersja na String
aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:2 miesiące
  • Postów:186
0

Mam problem z próbą rzutowania obiektu na String, próbowałem już chyba każe metody zmiany na Stringa, bład to:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.base/java.lang.String cannot be cast to java.base/java.lang.Integer
Problem w tym że muszę to zrzutować na stringa

Kopiuj
TreeMap<String, String> Tree=Tree = new TreeMap<String, String>();
String ElementsOfTree = (Tree.get(i)).toString(); // nie działa
String ElementsOfTree = (String)Tree.get(i);         // nie działa 
itp
.
.
.

Jak należy poprawnie wykonać rzutowanie?


Exception oznacza więcej niż tysiąc słów.
edytowany 1x, ostatnio: aolo23
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

Przecież trzymasz String to po co chcesz rzutować String na String?

Kopiuj
TreeMap<String, String> Tree = new TreeMap<String, String>();
Tree.put("ala", "ma kota");
String ElementsOfTree = Tree.get("ala");
System.out.println(ElementsOfTree);
aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:2 miesiące
  • Postów:186
0

Chodzi o to żemuszę robić coś w ten deseń

Kopiuj
for(int i=0; i< SizeTree; i++)  {
                String ElementsOfTree = (Tree.get(i)).toString();
               /* i tutaj działam na stringu dalej*/
}
             

Exception oznacza więcej niż tysiąc słów.
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

Jeżeli chcesz używać indeksów liczbowych to dlaczego używasz mapy a nie tablicy napisów?

aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:2 miesiące
  • Postów:186
0

Ponieważ potrzebne mi są typy generyczne


Exception oznacza więcej niż tysiąc słów.
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
2

Brzmi jak problem XY. Opisz pierwotny problem, bo to o co pytasz nie ma większego sensu, mimo że rozwiązanie wygląda tak

Kopiuj
String ElementsOfTree = Tree.get(Integer.toString(i));
kiyo
  • Rejestracja:około 8 lat
  • Ostatnio:około 5 godzin
  • Postów:155
0

To może coś takiego:

Kopiuj
TreeMap<String, String> tree = new TreeMap<>();
tree.put("Ala", "ma kota");
tree.put("Tomek", "ma małpe");
for (Map.Entry<String, String> map : tree.entrySet()){
    String firstElement = map.getKey();
    String secondElement = map.getValue();
    String string = firstElement + " " + secondElement;
    // ...
}

Bo z tego co zrozumiałem to chcesz wartość z mapy zapisać do jednego stringa i potem na nim operować, tak?

aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:2 miesiące
  • Postów:186
0

Problem jest taki że mam mapę zasypaną danymi ;)
Chcę/muszę w pętli "przejść po całej mapie" i sprawdzić czy pierwsza wartość jest równa "null", dlatego chciałem użyć Stringa i posłużyć się

Kopiuj
ElementsOfTree.equals("null);

Wszystkie te wartości z "null" muszę wyrzucić, stą taka koncepcja


Exception oznacza więcej niż tysiąc słów.
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

o_O a nie możesz po prostu porównać sobie z null a nie robić jakieś cuda na kiju ze stringami? Poza tym akurat klucz (bo to masz na myśli pisząc "pierwsza wartość"?) w mapie raczej nie będzie nullem. Jeśli jednak chcesz filtrować wartości które nie są null to:

Kopiuj
        Map<String, String> mapa = ImmutableMap.<String, String>builder()
                .put("ala", "ola")
                .put("ela", null)
                .build();
        Map<String, String> withoutNulls = mapa.entrySet()
                .stream()
                .filter(entry -> entry.getValue() != null)
                .collect(Collectors.toMap(
                        Map.Entry::getKey,
                        Map.Entry::getValue
                ));

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
Zobacz pozostały 1 komentarz
Shalom
A co to mamy rok 2008 że guavy chcesz używać? :P
jarekr000000
@Shalom zawiesił mi się moduł rozpoznawania autoironii na tym
Shalom
Oj tam, to immutable map to wrzuciłem tylko żeby mieć jakieś dane do zaprezentowania działania, a java jeszcze sie nie dorobiła wygodnego interfejsu do czegoś takiego. Ale generalnie jak nie trzeba wprowadzać zewnętrznej zależności, to lepiej tego nie robić :)
jarekr000000
Jak w strandardzie nie ma nawet dobrej mapy czy listy to trzeba dorzucać. Lepiej mieć w wątrobie glisty niż mutować wszystkie listy.
W0
@Shalom: Jakoś tak przypomniał mi się projekt gdzie pod magicznym "StringUtils" kryły się cztery różne klasy - w tym jedna implementacja własna :D
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0

A ja dorzucę jeszcze inny sposób, w sumie nie wiem czy polecany czy nie, ale na pewno krótszy (jeśli nie musisz jednak mieć posortowanej mapy):

Kopiuj
ConcurrentHashMap<String, String> mapWithoutNulls = new ConcurrentHashMap<>(treeMap);

I to wszystko. Bo Zarówno TreeMap jak i HashMap pozwalają na nullowe klucze i wartości, natomiast ConcurrentHashMap nie pozwala mieć nullowego ani klucza ani wartości.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

@Pinek no geniusz! Tylko że

  1. To się po prostu skończy NPE, bo "nie pozwalaniem na nullowe klucze/wartości" oznacza że przy próbie ich dodawania poleci NPE.
  2. Właśnie zasugerowałeś zeby zamiast rowerem pojechać do sklepu promem kosmicznym, bo pada a prom ma dach...

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0
Shalom napisał(a):

@Pinek no geniusz! Tylko że

  1. To się po prostu skończy NPE, bo "nie pozwalaniem na nullowe klucze/wartości" oznacza że przy próbie ich dodawania poleci NPE.
  2. Właśnie zasugerowałeś zeby zamiast rowerem pojechać do sklepu promem kosmicznym, bo pada a prom ma dach...

@Shalom Okej, co do 1 to się przyznaję bez bicia (nie przetestowałem kodu, myślałem że concurrentHashMap ma w sobie jakąś walidację czy co) ;DD nie licząć tego NPE, to aż taki zły pomysł, że mnie tak shejtowałeś? :(((

edytowany 1x, ostatnio: Pinek
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10073
1

A w ogóle to wiesz że technicznie, nie ma czegoś takiego jak pierwszy element mapy? Nie ma 100% gwarancji że jak dodasz klucze A, B, C to dostaniesz je w takiej kolejności.

Ps: Chyba tylko jedna implementacja Map<K, V> ma taką cechę.

PI
tak, LinkedHashMap
aolo23
Masz racje podczas dodawanie może i nie ale Collections.sort() załatwia sprawę, z kolejnością, jakiej ja się spodziewam ;)
aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:2 miesiące
  • Postów:186
0

Dzięki chłopaki za rady, chciałem robić ciężko, a zrobiłem lepiej i bez kwadratowej złożoności która miała być pierwotnie.
I dzięki za tak rzeczowe wsparcie, na pewno skorzystam z nich ;)


Exception oznacza więcej niż tysiąc słów.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.