【问题标题】:How to create a List of arrays using java如何使用java创建数组列表
【发布时间】:2019-04-30 04:47:45
【问题描述】:

我有一个数组列表,其值为{a,b,a,c,d,b,a} 我想对列表中的每个元素进行比较,并将common indexespair 插入到List of array 或使用java 的东西中

示例输出:[[0,2,6], [1,4]] 解释:a 位于索引 0,2,6b 位于索引 1,4 到目前为止,我有这个:

    HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
        List<String> name = new ArrayList<String>();
        letter.add("a");
        letter.add("b");
        letter.add("c");
        letter.add("b");
        letter.add("a");

         for (int i = 0; i < letter.size(); i++) {
            for (int j = 1; j < letter.size(); j++) {
                if (letters.get(i).equals(letters.get(j)) && i != j) {
                    hashMap.put(i, j);
                }
            }
        }
        System.out.println(hashMap); //o/p: {0=4, 1=3, 3=1}
        List<int[]> myList = new ArrayList<int[]>();
        Iterator entries = hashMap.entrySet().iterator();
        while (entries.hasNext()) {
            Map.Entry entry = (Map.Entry) entries.next();
            Integer key = (Integer)entry.getKey();
            Integer value = (Integer)entry.getValue();
            myList.add(new int[] {key,hashMap.get(key)});
        }
        System.out.println(myList.toString()); 
        //O/P: [[I@380fb434, [I@668bc3d5, [I@3cda1055]

更新: 这个想法是让 [[0,4],[1,3],[3,1]] 作为myList 中的元素,但我无法做到这一点。任何帮助深表感谢!谢谢!

基于上述索引数组,我想在这些索引处比较不同 List BC 中的元素 - 意思是比较 List B and C 中索引 0,2,6 处的元素并检查是否全部三要素相等。索引1,4处的元素相同

【问题讨论】:

  • 使用java内置的Comparator,Kinldy看看
  • 你创建了一个新的 ArrayList 像 List bList = new ArrayList();
  • @AdanVivero 我更新了问题。请检查并感谢您的回复

标签: java arrays arraylist


【解决方案1】:

我认为这会对你有所帮助:

    ArrayList<int[]> arrayList =new ArrayList<>();
    int[] arrayItem={0,2,6};
    int[] arrayItem2={1,4};
    arrayList.add(arrayItem);
    arrayList.add(arrayItem2);

【讨论】:

    【解决方案2】:

    作业完成了,检查一下:

    package com.company;
    
    import java.util.*;
    
    public class Main {
    
        public static void main(String[] args) {
        // write your code here
            HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
            List<String> letter = new ArrayList<String>();
            letter.add("a");
            letter.add("b");
            letter.add("c");
            letter.add("b");
            letter.add("a");
    
            for (int i = 0; i < letter.size(); i++) {
                for (int j = 1; j < letter.size(); j++) {
                    if (letter.get(i).equals(letter.get(j)) && i != j) {
                        hashMap.put(i, j);
                    }
                }
            }
            System.out.println(hashMap); //o/p: {0=4, 1=3, 3=1}
            List<int[]> myList = new ArrayList<int[]>();
            Iterator entries = hashMap.entrySet().iterator();
            while (entries.hasNext()) {
                Map.Entry entry = (Map.Entry) entries.next();
                Integer key = (Integer)entry.getKey();
                Integer value = (Integer)entry.getValue();
                int[] intValues = new int[2];
                intValues[0] = key;
                intValues[1] = value;
                myList.add(intValues);
            }
    
            String toPrint = new String();
            toPrint = toPrint.concat("[");
            for(int k = 0; k < myList.size(); k++) {
                toPrint = toPrint.concat("[");
                for(int l = 0; l < myList.get(k).length; l++) {
                    toPrint = toPrint.concat(String.valueOf(myList.get(k)[l]));
                    if(l != (myList.get(k).length-1)){
                        toPrint = toPrint.concat(",");
                    }
                }
                toPrint = toPrint.concat("]");
            }
            toPrint = toPrint.concat("]");
    
            System.out.println(toPrint);
            //[[0,4][1,3][3,1]]
        }
    }
    
    

    如果您需要做的只是在屏幕上打印值,则此代码将为您工作。

    【讨论】:

    • 我更新了问题。请检查并感谢您的回复
    【解决方案3】:

    您不能使用Map 检查字符串所有索引的方式。您可以尝试使用ArrayList,如下所示,

    import java.util.*;
    
    public class ListCharIndexes {
        public static void main(String[] args) {
            List<String> letter = Arrays.asList("a","b","a","c","d","b","a");
           //letter= Arrays.asList("a","b","c","b","a");
            List<List<Integer>> result=new ArrayList<>();
            Set<String> result1=new HashSet<>();
            for (int i = 0; i < letter.size(); i++) {
                if(result1.add(letter.get(i))){ //skip String if it is already processed
                    List<Integer> indexes=indexOfAll(letter.get(i), letter);
                    if(indexes.size()>1)     //add only pairs
                        result.add(indexes);
                }
            }
            System.out.println(result);
        }
        static List<Integer> indexOfAll(String obj, List<String> list) {
            final List<Integer> indexList = new ArrayList<>();
            for (int i = 0; i < list.size(); i++)
                if (obj.equals(list.get(i))) 
                    indexList.add(i);
            return indexList;
        }
    }
    

    O/P:

    [[0, 2, 6], [1, 5]]

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2015-08-02
      • 1970-01-01
      相关资源
      最近更新 更多