当我将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) 我需要打印两个ArrayLists的每个元素.
我有这样的想法:
for ((String post : Post) && (String posted : Posted)) {
jTextArea1.append(Post + " : " +Posted "\n");
}
Run Code Online (Sandbox Code Playgroud) 我不知道为什么在运行代码之后,数组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) 我正在尝试让三个不同的"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)
然后,这将保存三个相应的值.
现在,我将如何检索这些变量,同时仍然支持从列表中删除元素(也就是说,如果我从每个列表中删除一个元素 - 彼此对应的元素.)
如果我没有清楚地解释自己,请道歉 - 如果需要,我会很乐意提供更多细节.
谢谢!
我试图从我的一个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) 我想知道是否可以使用新的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)
但是,我可以将相同的想法应用于任意对象列表吗?
我知道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) 这是我的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) 我有这段代码.我该如何改造它?功能风格?事实上,我有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) 每当我尝试从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 ×10
arraylist ×3
java-8 ×3
collections ×2
arrays ×1
duplicates ×1
hashmap ×1
itemlistener ×1
java-stream ×1
jcombobox ×1
jtextarea ×1
list ×1
swing ×1