为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用java创建数组列表

如何使用java创建数组列表

慕哥6287543 2022-11-02 10:20:47
我有一个带有值的arrayList{a,b,a,c,d,b,a} 我想对列表中的每个元素进行比较并使用java将pairofcommon indexes插入a或其他东西List of array示例输出:[[0,2,6], [1,4]] 解释:a在索引处0,2,6和b在索引处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 B和C那些索引中的元素 - 意思是比较索引0,2,6中的元素List B and C并检查所有三个元素是否相等。索引处的元素相同1,4
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

我认为这会帮助你:


    ArrayList<int[]> arrayList =new ArrayList<>();

    int[] arrayItem={0,2,6};

    int[] arrayItem2={1,4};

    arrayList.add(arrayItem);

    arrayList.add(arrayItem2);


查看完整回答
反对 回复 2022-11-02
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

功课做完了,看看这个:


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]]

    }

}


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


查看完整回答
反对 回复 2022-11-02
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您不能使用Map以前检查 String 的所有索引的方式。您可以尝试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;

    }

}

输出/输出:


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


查看完整回答
反对 回复 2022-11-02
  • 3 回答
  • 0 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号