Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Как более эффективно и быстро научится кодить
#11
Все потому что на вас нет Бьёрна Страуструпа
Ответ
#12
Не забываем о косяках вроде расхода памяти, указателей и тд.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#13
Модераторы, Можно я в эту тему иногда буду задавать вопросы по кодингу? Кто сможет ответит )
Ответ
#14
А почему называете "кодинг", почему не "программирование"?

"Кодинг" в момем понятии это написание программы по четкому сценарию, когда заказчиком решено все вплоть до используемых для реализации алгоритмов.
Ответ
#15
Цитата:А почему называете "кодинг", почему не "программирование"?

"Кодинг" в момем понятии это написание программы по четкому сценарию, когда заказчиком решено все вплоть до используемых для реализации алгоритмов.

Слово короче ХД

Дабы не постить еще 1 мессагу)) В общем дело пошло поехало))) к конце недели покажу мини игру который я делаю))) Нашёлся хороший учитель)
Ответ
#16
день хз какой: HashMap

Такой вопросик

Код:
public class DataDefinition
{

    private Vector2[] vectorList2;
    private Vector3[] vectorList3;
    private Vector4[] vectorList4;
    
    private  HashMap<Integer, Vector2>  _mapElementsV2 =  new HashMap<Integer, Vector2>();
    private  HashMap<Integer, Vector3>  _mapElementsV3 = null;
    private  HashMap<Integer, Vector4>  _mapElementsV4 = null;
    public int key=0;
    
    public boolean addMapValueV2 (Vector2 v)
    {     ++key;
    
        //Checkers
        if(_mapElementsV2 == null)
        {
            System.out.println("_mapElementsV2 not initialized!");
            return false;
        }
        
        if (_mapElementsV2.put(key, v) == null)
        {
            return false;
        }

        return true;
    }
        
    public boolean replaceMapValueV2 (int k, Vector2 v)
    {
        
        if(_mapElementsV2.replace(k, v) == null)
        {
            return false;
        }
        _mapElementsV2.replace(k, v);
        return true;
    }
    
    /**
     *
     * @param vector2
     * @return
     */

    public boolean removeMapValueV2 (int keyId)
    {
        if(_mapElementsV2.remove(keyId) == null)
        {
            return false;
        }
        //System.out.print("size="+_mapElementsV2.size());
        
        return true;
        
    }
    
    
    // PRINTERS
    public void printMapV2()
    {
        int keyIdIncrement = 0;
        for (Vector2 v: getMapElementsV2().values())
        {
        
            System.out.println("[ ID:" + keyIdIncrement++  + " , X:" + v.getX() + " , Y:" + v.getY() + " ]");
        }
    }



Код:
package commands;

import java.util.Random;
import java.util.Scanner;

import main.DataDefinition;
import main.Inputs;
import main.MainGame;
import util.Vector2;

public class CommandCollection
{
    
    public MainGame _mainGameHandler = null;                     // this is handler for MainGame object.
    
    private int _x;
    private int _y;
    

    public CommandCollection(MainGame mainGameHandler)
    {
        _mainGameHandler = mainGameHandler;
    }
    
    public void addNewLocationV2()
    {
        if(_mainGameHandler == null || _mainGameHandler.getDatastorage() == null)
        {
            System.out.println("_mainGameHandler is not initialized!");
            return;
        }

        //@TODO Checker for symbols
        Scanner scn = new Scanner(System.in);

        {
            System.out.println("Enter Vector2 Location:");    
            System.out.println("Enter Coordinates for : x , y:");    
            
            _x = scn.nextInt();        //Read X Value
            _y = scn.nextInt();        //Read Y Value
            
            _mainGameHandler.getDatastorage().addMapValueV2(new Vector2(_x, _y));
            System.out.println("Data was succesfully inserted:");
            _mainGameHandler.getDatastorage().printMapV2();
                
        }

        System.out.println("\n\n");
        _mainGameHandler.input.keyboardInput();
        scn.close();
    }
    
    public void removeLocationV2()
    {
        if(_mainGameHandler == null || _mainGameHandler.getDatastorage() == null)
        {
            System.out.println("_mainGameHandler is not initialized!");
            return;
        }

        //@TODO Checker for symbols
        Scanner scn = new Scanner(System.in);

        {
            System.out.println("Enter Vector2 Location ID you want to remove:");    
            int removableKeyId;
            removableKeyId = scn.nextInt();
            _mainGameHandler.getDatastorage().removeMapValueV2(removableKeyId); // here the method knows what id user want to removesec gimme
            System.out.println("Data was succesfully removed:");
            _mainGameHandler.getDatastorage().printMapV2();
                
        }


        System.out.println("\n\n");
        _mainGameHandler.input.keyboardInput();
        scn.close();
    }

......

public void showAllStoredData()
    {
        
        Inputs input = new Inputs(_mainGameHandler);
        DataDefinition dataStorage = new DataDefinition();
        Scanner scn = new Scanner(System.in);
        
        //Null Checker
        if (dataStorage.getMapElementsV2() == null)
        {
            System.out.println("Error: Data is null");
            input.keyboardInput();
            scn.close();
        }
        
        dataStorage.printMapV2();
        dataStorage.getMapElementsV2().get(_mainGameHandler);
        
        _mainGameHandler.getDatastorage().printMapV2();
        System.out.println("\n");
        //Returning to Inputs
        input.keyboardInput();
        scn.close();
    }


Значит фишка вот в чем

Я ввожу данные в хэш мапу.

Он их вводит с кейИд начиная с 1 2 3 4...

Я ввожу 3 к примеру числовых данных. [10 10] , [20 20] , [30 30]

Удаляю первый идшник. ОК работает

Добавляю еще 1 Дату, 555 555 к примеру

И при удаление еще раз он не сортирует их заного с 1 2 3 4 а берет к примеру 2 3 4 и так далее т.е ничего не происходит ибо он не находит нужный ид

Мне нужен метод пересортировки после удаления. Правильно? Подскажите куда копать

[Изображение: sihvc8k1f5r8spfc28b8wdw48.png]

[Изображение: jl5a3ta1ecyp4k23z76q58nqa.png]

[Изображение: y26593f284ec41qxefr6rsxg9.png]




////UPDATE

Сделал небольшой дебажичег с КейСет...

Вот каковы реальные значение ид в мапе

[Изображение: o4ul4p1kb80sg2kyc0o7qz6gn.png]

А мне надо при каждом удаление их пересобрать в 1 2 3 4 5 и так далее
Ответ
#17
Пост не читал@Click-clack
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#18
Код:
    public void RefreshKeys()
    {
        HashMap<Integer, Vector2> _localmapElementsV2 = new HashMap<Integer, Vector2>();
        int localKeyVar = 0;
        for(Vector2 v : _mapElementsV2.values())
        {
            _localmapElementsV2.put(++localKeyVar, v);
        }
        _mapElementsV2 = _localmapElementsV2;
        
    }

Всем спасибо на покачто)) Буду учится дальше))
Ответ
#19
Не рекомендую использовать без необходимости увеличение на единицу до выполнения операции типа ++i.

В вашем примере вы объявили значение переменной localKeyVar = 0, но оно не используется. В итоге у вас карта начинается с 1.

На мой взгляд правильнее было бы так:
[SRC="java"] public void RefreshKeys()
{
List<Vector2> _cashVectors = _mapElementsV2.values();
Map<Integer, Vector2> _mapElementsV2 = new HashMap<>(_cashVectors.size());

int localKeyVar = 0;
for (Vector2 v : _cashVectors)
_mapElementsV2.put(localKeyVar++, v);
}[/SRC]
Родился, живу и когда-нибудь умру.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Как бросить курить быстро и без усилий. Wishmаster 45 7,537 07-12-2023, 02:09 AM
Последний пост: Modestayn
  Спам по мылу, эффективно ли ? GOODPower 14 3,097 08-30-2012, 08:14 PM
Последний пост: linliss
  L2JServer более не OpenSource? VMilky 13 3,884 08-18-2012, 07:32 PM
Последний пост: hErrosh
  Быстро всем голосовать за родной портал. [STIGMATED] 18 5,275 04-10-2011, 03:28 PM
Последний пост: Casper

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)