Reklama
Pokazuje wyniki od 1 do 12 z 12

Temat: [Lista][ArrayList][java] operacje sortowania i inne dziwne rzeczy

  1. #1

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny [Lista][ArrayList][java] operacje sortowania i inne dziwne rzeczy

    nie jestem miszczem javy, ale zadanie wydawało się proste.
    no właśnie, wydawało się ;]
    jakieś pomysły jak takie coś zrobić?
    wskazówki/cokolwiek ;p
    wersja dla ludzi nielubiących tagów php
    http://pastebin.com/pBFeGBj6

    oczywiście implementuje interface
    Kod PHP:
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.Collections;
    
    class SortujWgDZrodla implements Comparator<Accounting>{
    public int compare(Accounting x, Accounting y){
    return x.zrodlo.compareTo(y.zrodlo);
    
    	}
    	
    }
    
    class SortujWgDanych implements Comparator<Accounting>{
    public int compare(Accounting x, Accounting y){
    int wart1=x.przesyl;
    int wart2=y.przesyl;
    if(wart1<wart2) return -1;
    if(wart1>wart2) return 1;
    else return 0;
    	}	
    }
    
    class Accounting implements AccountingInterface{
    String zrodlo = new String();
    String cel = new String();
    int przesyl=0;
    int sum=0;
    List<String> acc=new ArrayList<String>();
    List<Integer> acc2=new ArrayList<Integer>();
    List<Accounting> acc3=new ArrayList<Accounting>();
    
    Accounting() {}
    
    
    	
    public void count(String source, String destination, int amount){
    zrodlo= source;
    cel = destination;
    przesyl= amount;
    
    System.out.println("Zrodlo: "+zrodlo + " Cel "+ cel + " Ilosc " +przesyl);
    acc.add(zrodlo);
    acc2.add(przesyl);
    
    acc3.add(new Accounting());
    sum+=amount; 
    System.out.println("Przeslano w sumie: "+sum);
    
    
    
    	}
    
     private void sortList(List<String> aItems){
        Collections.sort(aItems, String.CASE_INSENSITIVE_ORDER);
      }	
    		
    	
    public List<String> theMostActiveSources(int amount){	
    
    int wielkosc = amount;
    
    sortList(acc);
    List<String> small=acc.subList(0,wielkosc);
    //sortList(small);
    Collections.sort(acc2);
    for(int i: acc2)
    System.out.println(i);
    return small;
    
    
    	}
    
    
    //List<String> theMostActiveDestinations(int amount){}
    
    }
    
    
    class Start{
    public static void main(String[] args){
    List<Accounting> acc=new ArrayList<Accounting>();
    Accounting o=new Accounting();
    o.count( "adam","g1",1);
    o.count("wacek","g2",1);
    o.count("eka","g3",1);
    o.count("robek","g3",4);
    o.count("trup","g3",5);
    o.count("yafud","g3",0);
    o.count("ula","g3",1000);
    o.count("iga","g3",6);
    o.count("ola","g3",9);
    
    
    System.out.println(o.theMostActiveSources(9));
    
    for(Accounting dos:acc ) System.out.println(o);
    
    	}}
    Ostatnio zmieniony przez Chrill : 09-02-2014, 12:04

  2. #2
    Avatar Cybuch
    Data rejestracji
    2004
    Położenie
    Poznań
    Wiek
    32
    Posty
    2,161
    Siła reputacji
    21

    Domyślny

    ale napisz może o co chodziło w zadaniu, co już zrobiłeś i z czym nei możesz sobie poradzić

  3. Reklama
  4. #3

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    Cytuj Cybuch napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    ale napisz może o co chodziło w zadaniu, co już zrobiłeś i z czym nei możesz sobie poradzić
    dobra, kod który wypociłem jest w pierwszym poście, ale:
    mam klasę, której metoda count() przekazuje informacje: (skąd, dokąd, ile) dla jakichś pomiarów.
    jak pomiarów więcej, to ilość ma sumować.
    To zrobiłem.
    Potem mam metodę List<String> theMostActiveSources(int amount); która jak widać ma zwracać List<String> źródeł, które najwięcej informacji przesłały.
    Lista ma być posortowana od źródla które przesłało najwięcej informacji, do tego które najmniej przesłało.
    Jeśli jakieś źródła przesłały taką samą ilość, to mają być posortowane alfabetycznie w tej właśnie liście.
    Plus lista może zwracać nie więcej niż zadaną listę pozycji (to wiem jak zrobić i zrobiłem w kodzie ;p)
    ale nie mam bladego pojęcia jak posortować listę stringów wZględem wartości "int".
    Jak dla mnie to musi być lista obiektów i dopiero sortować ją tak jak polecenie nakazuje.
    Ale java to dla mnie czarna magia w niektórych kwestiach, więc zwracam się do Was, TORGowi specjaliści o pomoc ;D

    wystarczą wskazówki do tej List<String> theMostActiveSources(int amount), druga jest praktycznie podobna

  5. #4
    Avatar Cybuch
    Data rejestracji
    2004
    Położenie
    Poznań
    Wiek
    32
    Posty
    2,161
    Siła reputacji
    21

    Domyślny

    Nie wiem po co tam ten parametr amount, ale mógłbyś użyć tak

    Kod:
    Collections.sort(twojaLista, new SortujWgDanych());
    ale żeby sortowało alfabetycznie w przypadku dwoch takich samych wartosci to mozliwe, ze swoj comparator musialbys napisac
    generalnie zerknij tu: http://stackoverflow.com/questions/2...ts-by-property
    Ostatnio zmieniony przez Cybuch : 08-02-2014, 17:03

  6. #5

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    Cytuj Cybuch napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Nie wiem po co tam ten parametr amount,
    parametr narzucony przez prowadzącego ;p

    co do Comparator to kombinowałem na ten temat, ale hm, w ten kwestii mi toto nie pomaga.
    coparatora w połączeniu z Collections.sort(); mógłbym prędzej użyć w przypadku List<Object> czyli w moim przypadku jak bym miał List<Accounting>
    a tu mi wypieprza milion błędów, bo zły typ danych :D

    @edit
    chodzi mi o to, że jak już, to nazwy mogę mieć w jednej liście, a EWENTUALNIE wartości w innej, więc idee comparatora diabli mi wzieli ;)
    Ostatnio zmieniony przez Chrill : 08-02-2014, 17:08

  7. #6
    Avatar Cybuch
    Data rejestracji
    2004
    Położenie
    Poznań
    Wiek
    32
    Posty
    2,161
    Siła reputacji
    21

    Domyślny

    http://stackoverflow.com/questions/3...ultiple-fields

    w tej klasie sortujWgZrodla wystarczy ze bys ja przepisal dodajac warunek, jesli x == y to wtedy pobiera nazwa i sprawdza nazwe

    http://javastart.pl/algorytmy/sortow...-i-comparable/
    @Chrill ;
    pisane tutaj, wiec moze gdzies brakowac srednika, ale powinno byc ok, mozliwe ze w bedzie zwracal wartosci rozne mniejsze/wieksze od -1/1, ale mam nadzieje, ze poradzisz sobie z obsluga tego
    Kod:
    class Sortuj implements Comparator<Accounting>{
    		@Override
    public int compare(Accounting x, Accounting y){
    int wart1=x.przesyl;
    int wart2=y.przesyl;
    if(wart1<wart2) return -1;
    if(wart1>wart2) return 1;
    if(wart1==wart2) {
    	return x.zrodlo.compareTo(y.zrodlo);
    }
            }      
    }
    Ostatnio zmieniony przez Cybuch : 09-02-2014, 02:27

  8. #7

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    hm, no jak używam Twojego kodu @Cybuch ; to wywala mi taki error (jak wcześniej pisałem swoje komparatory dla tej klasy to ten sam problem miałem D:)
    wywołuje oczywiście: Collections.sort(acc, new Sortuj());

    Załącznik 306784
    Ostatnio zmieniony przez Chrill : 09-02-2014, 12:18

  9. #8
    Avatar Cybuch
    Data rejestracji
    2004
    Położenie
    Poznań
    Wiek
    32
    Posty
    2,161
    Siła reputacji
    21

    Domyślny

    @Chrill ;
    nie myslales o uzywaniu jakiegos IDE jak np. Eclipse?

    edit: za jakis czas odpale to normalnie u siebie i sprawdze co jest 5
    Ostatnio zmieniony przez Cybuch : 09-02-2014, 12:23

  10. #9

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    Cytuj Cybuch napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    @Chrill ;
    nie myslales o uzywaniu jakiegos IDE jak np. Eclipse?
    NetBeans czasem używałem, a tak to linux i terminal, bo w sumie do nauki nie było mi IDE potrzebne...
    Ale ściągnę bo w sumie trochę siara w notatniku jechać ;D

    @ok, będę wdzięczny

  11. #10
    Avatar Cybuch
    Data rejestracji
    2004
    Położenie
    Poznań
    Wiek
    32
    Posty
    2,161
    Siła reputacji
    21


  12. #11

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    dzięki, działa idealnie tak jak trzeba.
    nie mam pojęcia, jak mogłem tak oczywistych rzeczy nie wiedzieć ;]
    czy mógłbym Cie prosić o usunięcie tego z pastebina? (jeśli się da ofc)

  13. #12
    Avatar Cybuch
    Data rejestracji
    2004
    Położenie
    Poznań
    Wiek
    32
    Posty
    2,161
    Siła reputacji
    21

    Domyślny

    Chyba się nie da

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. LUMIA 520 - brak sortowania muzyki po dacie dodania.
    Przez RedheadPapa w dziale Urządzenia mobilne
    Odpowiedzi: 1
    Ostatni post: 18-01-2015, 22:46
  2. [java][map] operacje
    Przez Chrill w dziale Programowanie
    Odpowiedzi: 4
    Ostatni post: 06-02-2014, 14:54
  3. [JAVA] Arraylist i konstruktor.
    Przez coke w dziale Programowanie
    Odpowiedzi: 14
    Ostatni post: 30-01-2014, 22:23
  4. [JAVA] Tablice - podstawowe operacje
    Przez Chrill w dziale Programowanie
    Odpowiedzi: 6
    Ostatni post: 18-10-2013, 12:58
  5. 50 knight, pacc - lista rzeczy do zrobienia
    Przez Wojtasman w dziale Tibia
    Odpowiedzi: 7
    Ostatni post: 17-09-2012, 11:33

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •