Блог пользователя taklo

Автор taklo, история, 5 лет назад, По-английски

Hello Codeforces Community, I am new to java until now I have done all of my competitive programming in C++ 17 and now I want to learn basic JAVA through sports programming . I have searched for it on google but i'm confused with various type of map containers available in java , Please guide me .

#include<iostream>
#include<map>
using namespace std;
int main(){
	map<int ,int > M;
	int n;
	cin>>n;
	int a[n];
	for(int i=0;i<n;i++){
		cin>>a[i];		
		M[a[i]]++;
	}
	if(M.find(10)!=M.end()){
		cout<<"10 is present \n ";
	}
	for(auto x: M){
		cout<<x.first<<" "<<x.second<<"\n";
	}
	return 0;
}

Please Tell me the alternative Java Code Thanks in Advanced

  • Проголосовать: нравится
  • -7
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Map is an interface in Java. You can either use HashMap<> or TreeMap<> as a concrete implementation of the Map interface. So if you want a map with key as Integers and value as String. You can do something like

Map<Integer, String> hMap = new HashMap<>();
Map<Integer, String> tMap = new TreeMap<>();

Worst case running time in both TreeMap and HashMap is $$$\mathcal{O}(\log n)$$$ (Each bucket has a balanced binary search tree instead of a linked list. They introduced this improvement in Java 8). But on an average you get $$$\mathcal{O}(1)$$$ for the HashMap

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Thanks for your time, That means HashMap is preferable according to you

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      It depends on the use case. If all you are doing is just insertions, deletions and look ups then yeah HashMap is better. But if you want to find min/max/floor/ceil then you need to use TreeMap.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Thanks, can you also tell equivalent of vector<vector> in c++ for storing graph, for java ? is using Hashmap good for storing graph in java.

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Java also has Vector. Lol.

      But Vector is slower than ArrayList from what I heard. So use ArrayList I guess?

      • »
        »
        »
        »
        5 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

        actually they say, both vector and arraylist are slower, that's why I asked, but thanks

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится +10 Проголосовать: не нравится

      I generally use the following for adjacency lists

      ArrayList<Integer>[] adj = new ArrayList[V]; // you'll have to iterate the array and initialize each list before using. 
      

      But sometimes ArrayList based implementations tend to be slow. In that case you can use plain old arrays. For example, I use uwi's implementation (the packU method iterates over the edge list and constructs an adjacency list).

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can anyone also tell me what are the alternatives for lower_bound and upper_bound in Java?