public void binHash() {
        getSingleExpressions();
        // printtabinfo();
        int count = 0;
        HashMap<Integer, List<String>> inMem = new HashMap<Integer, List<String>>();
        boolean makeBins = true;
        String next[];

        for (IndexWrapper i : ilist) {
            makeBins = true;
            // checking smaller table to create in memory hash map
            if (count == ilist.size() - 1) {
                outstreamCreator(i.getTables(), i.getColumns(), count);
                Main.ct = newctList;

            } else {
                if (count == 0) {
                    if (i.getSize()[0] < i.getSize()[1]) {
                        if (i.getSize()[0] < 100) {
                            inMem = getInMemoryMap(i.getTables().get(0),
                                    i.getColumns()[0], true);
                            String newtab = i.getTables().get(1) + "+"
                                    + i.getTables().get(0);
                            next = getNextKey(count, i.getTables(), newtab);
                            readlineNlookup(inMem, i.getTables().get(1),
                                    i.getColumns()[1], next[0], next[1], newtab);
                            makeBins = false;
                        }

                    } else {
                        if (i.getSize()[1] < 100) {
                            inMem = getInMemoryMap(i.getTables().get(1),
                                    i.getColumns()[1], true);

                            String newtab = i.getTables().get(0) + "+"
                                    + i.getTables().get(1);

                            next = getNextKey(count, i.getTables(), newtab);
                            readlineNlookup(inMem, i.getTables().get(0),
                                    i.getColumns()[0], next[0], next[1], newtab);

                            makeBins = false;
                        }
                    }
                }
                // making bins
                if (makeBins) {

                    bincreatorNjoin(i.getTables(), i.getColumns(), count);

                }
                count++; // ilist count
            }
        }
    }