小编Era*_*ran的帖子

在其他arraylist上执行addAll时,两个arraylists都引用相同的元素

当我将a的所有内容添加ArrayList到另一个时ArrayList,另一个ArrayList包含对第一个元素的引用ArrayList.因此,当我更改Lists 中的任何一个元素时,另一个元素中的相应元素List也会发生变化.这显然意味着addAll分配对新的引用List.

参考代码:

ArrayList<StringBuffer> a = new ArrayList<>();
a.add(new StringBuffer("1"));
a.add(new StringBuffer("2"));
a.add(new StringBuffer("3"));

ArrayList<StringBuffer> b = new ArrayList<>();
b.addAll(a);

System.out.println("Arralists" + " before: ");
System.out.println("A arraylist" + a.toString());
System.out.println("B arraylist" + b.toString() + "\n\n");

a.set(0, a.get(0).replace(0, 1, String.valueOf(4)));

System.out.println("Arralists after " + "updating a: ");
System.out.println("A arraylist" + a.toString());
System.out.println("B arraylist" + b.toString() + "\n\n");
Run Code Online (Sandbox Code Playgroud)

对应日志:

Arralists before: 
A arraylist[1, 2, 3]
B …
Run Code Online (Sandbox Code Playgroud)

java collections arraylist

1
推荐指数
1
解决办法
62
查看次数

打印两个ArrayLists的每个元素

我需要打印两个ArrayLists的每个元素.

我有这样的想法:

for ((String post : Post) && (String posted : Posted)) {
    jTextArea1.append(Post + " : " +Posted "\n");   
}  
Run Code Online (Sandbox Code Playgroud)

java arraylist jtextarea

1
推荐指数
1
解决办法
42
查看次数

如何正确地将值分配给对象数组?

我不知道为什么在运行代码之后,数组scoreMatrix总是把最后一个赋值放到整个数组中.

        String input, seq="ACGT";
        PairScore[] scoreMatrix = new PairScore[16];
        for(int x = 0; x<16 ; x++){
            scoreMatrix[x] = new PairScore();
        }
        Scanner user_input = new Scanner( System.in );
        for(int i = 0; i <4;i++){
            input=user_input.nextLine();
            String[] inputSplite = input.split("\\s+");
            for(int j=0; j<4;j++){
                scoreTable[i][j] = Integer.parseInt(inputSplite[j]); 
            }
        }
        for(int x = 0; x<4 ; x++){
            for(int y=0; y<4; y++){
                scoreMatrix[x*4 +y].fString = Character.toString(seq.charAt(x));
                scoreMatrix[x*4 +y].sString = Character.toString(seq.charAt(y));
                scoreMatrix[x*4 +y].score = scoreTable[x][y];
            }
        }// Fix the score pair problems;
        for(int …
Run Code Online (Sandbox Code Playgroud)

java arrays

0
推荐指数
1
解决办法
43
查看次数

如何记录多个对象的位置,同时仍然可扩展?

我正在尝试让三个不同的"List"对象一起工作.

总结一下我正在尝试做的事情,我试图保存三个不同的变量,但要将它们全部一起访问.

所以,如果我说:

void main() {
    addStuff(1, 12, true);
}
void updateStuff(int i1, int i2, boolean b1) {
    list1.add(i1);
    list2.add(i2);
    list3.add(i3);
}
Run Code Online (Sandbox Code Playgroud)

然后,这将保存三个相应的值.

现在,我将如何检索这些变量,同时仍然支持从列表中删除元素(也就是说,如果我从每个列表中删除一个元素 - 彼此对应的元素.)

如果我没有清楚地解释自己,请道歉 - 如果需要,我会很乐意提供更多细节.

谢谢!

java list

0
推荐指数
1
解决办法
56
查看次数

删除`ItemListener`会触发`ArrayIndexOutOfBounds`

我试图从我的一个JComboBoxes中删除一个项目监听器.下面是代码.

clientNameCombo.removeItemListener(clientNameCombo.getItemListeners()[clientNameCombo.getItemListeners().length-1]);
Run Code Online (Sandbox Code Playgroud)

我动态添加ItemListener到上面的组合框.但是,有时当上面的代码运行时,它会给出错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at UI.MainUIHolder$CoreClientOtherPaymentTypeComboAction.itemStateChanged(MainUIHolder.java:10031)
    at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1223)
    at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1280)
    at javax.swing.JComboBox.contentsChanged(JComboBox.java:1329)
    at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118)
    at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:576)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:622)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:834)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:498)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717) …
Run Code Online (Sandbox Code Playgroud)

java swing jcombobox indexoutofboundsexception itemlistener

0
推荐指数
1
解决办法
100
查看次数

使用Streams API基于字段值对对象求和

我想知道是否可以使用新的Streams API在一行中执行以下操作:

List<MyItem> arr = new ArrayList<>();

// MyItem has a single field, which is a value
arr.add(new MyItem(3));
arr.add(new MyItem(5));

// the following operation is the one I want to do without iterating over the array
int sum = 0;
for(MyItem item : arr){
  sum += item.getValue();
}
Run Code Online (Sandbox Code Playgroud)

如果数组只包含ints,我可以做到这样的事情:

int sum = array.stream().mapToInt(Integer::intValue).sum();
Run Code Online (Sandbox Code Playgroud)

但是,我可以将相同的想法应用于任意对象列表吗?

java collections java-8

0
推荐指数
1
解决办法
488
查看次数

HashMap 重复值 - 识别重复值

我知道HashMap不允许插入重复值,它用最新条目替换最后一个重复值。有没有办法打印在该put方法中发现的重复项?

我有以下代码片段:

for( int i = 0; i <= elements.length - 1; i++) {
    nodeDBList = (NodeList) xPath.compile(elements[i]).evaluate(dbDocument, XPathConstants.NODESET);
    for (int j = 0; j < nodeDBList.getLength(); j++) {
        if(nodeDBList.item(j).getFirstChild() != null)
            dbList.put(nodeDBList.item(j).getFirstChild().getNodeValue().toLowerCase().trim(), 
                       nodeDBList.item(j).getNodeName().toLowerCase().trim());

    }
} 
Run Code Online (Sandbox Code Playgroud)

java hashmap duplicates

0
推荐指数
1
解决办法
5620
查看次数

Java 8:groupingBy与关联对象的属性?[循环推断]

这是我的Test样子:

@Test
    public void testFunctional() 
    {
        final Member member = new Member("email", "memberExternalId", "clientId", "clientSecret");
        final Category foodCategory = new Category("Groceries", "Food");
        final Category utilityCategory = new Category("Internet", "utility");

        final List<Transaction> transactions = new ArrayList<>();
        {
            transactions.add(new Transaction("food1", new BigDecimal("10.00"), true, LocalDateTime.now(), member, foodCategory));
            transactions.add(new Transaction("food2", new BigDecimal("20.00"), true, LocalDateTime.now(), member, foodCategory));
        }
        {
            transactions.add(new Transaction("utility1", new BigDecimal("100.00"), true, LocalDateTime.now(), member, utilityCategory));
            transactions.add(new Transaction("utility2", new BigDecimal("200.00"), true, LocalDateTime.now(), member, utilityCategory));
        }

        final Map<String, List<BigDecimal>> groupByCategory = transactions.stream().collect(Collectors.groupingBy(Category::getGroupName));
    } …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea java-8

0
推荐指数
1
解决办法
2020
查看次数

在流中打开流

我有这段代码.我该如何改造它?功能风格?事实上,我有List<X>.每个X包含List<V>.此列表中的每个V都有List<M>一个参数.我需要构建Map<X,Y>,其中Y是存储在对象X中聚合的所有V对象中的所有M个对象的数量.

HashMap<Country, Integer> modelsPerCountryMap = new HashMap<>();
int count;
for (Country country : CountryDataSingleton.getCountryDataCollection()) {
    count = 0;
    for (CarMaker cm : country.getListOfMakers()) {
        count += cm.getModels().size();
    }
    modelsPerCountryMap.put(country, count);
}
Run Code Online (Sandbox Code Playgroud)

java functional-programming java-8 java-stream

0
推荐指数
1
解决办法
105
查看次数

List的removeIf()没有按预期工作

每当我尝试从List使用list.removeIf(condition)中删除一个元素时,它会抛出UnsupportedOperationException:

public class Test 
{
    public static void main(final String[] args) 
    {
        String[] stringArray = new String[]{"A","B","C","D"}; 
        List<String> stringList = Arrays.asList(stringArray); 
        stringList.forEach(System.out::println); 
        stringList.removeIf((String string) -> string.equals("B")); 
        stringList.forEach(System.out::println); 
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么不起作用?

java arraylist

0
推荐指数
1
解决办法
549
查看次数